姜研艷
摘 要:C語言簡潔緊湊,靈活方便,是一種廣泛使用的程序設計語言,它具有功能豐富、表達能力強,使用靈活方便等特點。像許多計算機語言一樣,C語言有三種基本結構:順序結構、選擇結構、循環結構。而循環結構是重點也是難點。本文對C語言中的三種循環做了分析和比較,讓學生更容易理解和掌握C語言。
關鍵詞:C語言;while循環;do..while循環;for循環
C語言簡潔緊湊,靈活方便。成為最受歡迎的語言之一,同時也是中職計算機學校必學的一門語言課。在程序設計中對于那些需要重復執行的操作應該采用循環結構來完成,循環結構又稱重復結構。利用循環結構處理各類重復操作既簡單又方便。循環程序設計是C語言的重點也是難點。循環程序主要有三種類型。while循環,do…while循環。for循環。因此,掌握三種類型之間的區別和聯系則顯得尤為重要。它們三者的區別和聯系主要體現在以下幾個方面:
一、一般形式:
1、while循環:
while(條件表達式)
{語句序列;}
2、do…while循環
do
{語句序列;}
while(條件表達式);
3、for循環
for(表達式1;表達式2;表達式3)
{語句序列;}
二、執行過程:
while循環:
當條件表達式語句的返回的值為真的時候,程序就會執行下面大括號里的語句序列中的語句,當程序執行完這個執行語句序列中的語句的時候,程序就會再一次的回來執行這個條件表達式語句,當程序檢查這個條件表達式語句的結果還是真時,程序就會再一次的執行這個執行語句塊中的語句,當程序執行完成這個執行語句塊中的語句以后,程序就會再一次的回來判斷這個條件表達式語句,當這個條件表達式語句返回的值還是真的時候,程序就會再一次的去執行這個大括號中的執行語句塊中的語句,如此往復直到這個條件表達式語句返回的結果為假的時候,程序就會停止循環,而去執行整個while循環語句以外的后面的其他的語句。
do ..while循環
do… while循環while后面必須要有分號,不管while條件表達式語句是否為true,程序要先執行一次語句序列中的語句,當第一次執行完執行語句序列中的語句后,程序再去判斷這個條件表達式語句是否為true,如果為true再進行這個while循環,如果為false就跳出這個循環。
for循環
1、第一次循環,即初始化循環。
首先執行表達式1(一般為初始化語句),再執行表達式2(一般為條件判斷語句),判斷表達式1是否符合表達式2的條件,如果符合,則執行語句序列,否則,停止執行,最后執行表達式3。
2、下次的循環:
首先執行表達式2,判斷表達式3是否符合表達式2的條件;如果符合,繼續執行語句序列,否則停止執行,最后執行表達式3.如此往復,直到表達式3不再滿足表達式2的條件。在for循環中“表達式1”和“表達式3”可以是一個簡單的表達式。
總體來說,while是先判斷再執行,do…while是先執行再判斷,for循環的語句顯得更緊湊一些,for語句一般更適合用于循環次數比較明確的情況,而while或do…while語句則用于循環次數難以判定的情況。
三、循環次數
從循環的執行過程不難看出。While循環是先判斷后執行,一旦第一次條件為假,則它的執行次數就為0,最少執行0次。for循環也是一樣的。而do…while則不同。它是先執行后判斷,所以不管條件是否為真,它都要執行一次。所以它的執行次數最少為1次。
四、while和do...while的區別比較
下面通過例題比較兩者的區別
1、 #include
main() ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? main()
{char ch; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?{char ch;
ch=getchar(); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?ch=getchar();
do ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?while(ch!=*)
{putchar(ch); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? {putchar(ch);
ch=getchar(); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ch=getchar();
}while(ch!=*); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?}
} ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }
這兩個程序如果同樣都是輸入:*AB*
第一種do..while循環是先執行后判斷,因此不做判斷先輸出。結果是*AB。
第二種while循環是先判斷后執行,因此它先做判斷,如果是真值再做輸出。結果是*AB*
五、三種循環的共同點
while, do-while, for循環語句,雖然格式不同,但它們有著共同的特點,都實用于循環結構程序設計。在程序設計的過程中,都具有如下三個要素:
1、循環變量賦初值。
2、循環條件。
3、循環變量值的調整。
循環體語句的正確執行,依賴于循環的條件,循環的條件依賴循環入口時的初始化工作,一環緊扣一環。
循環體中安排哪些語句,要從分析具體問題入手,前后呼應,合乎邏輯。并且能確保循環能夠終止。而且結論正確。
循環體中一定要有能改變循環繼續的條件語句,使得循環趨于結束,否則循環將無休止的進行下去,而形成“死循環”。這是我們應該避免的。所以為使循環能夠正確進行,一定要做好循環的準備工作,在循環語句開始前,要給循環條件和循環初值賦上一定的值。
六、實際應用
理論的學習需要實際的題來檢驗。不同的題有最適合它的循環結構。
有這樣的兩道題。
1、從鍵盤上輸入10個數,求其和。
分析用三類循環中的哪個呢?不難看出這道題中的循環次數比較明確,應該最優選用for循環。它的編程如下:
#include
main()
{ int i,num,sum;
sum=0;
for(i=1;i<=10;i++)
{scanf(“%d”,&num);
sum=sum+num;
}
printf(“%d”,sum);
}
2、從鍵盤上輸入若干個數,直到遇到2為止,求它們的和。
分析得出循環次數難以判定,排除for。應該用while或者do…while。兩個都可以?還是其中一個呢?因為while是先判定后執行;do…while是先執行后判定。而本題中要求遇到2就截止。如果用do…while的話,第一個數就是2,那么這個2也會被加進去。將違背我們的題意。所以不能用do…while。while是先判定后執行。如果第一個數是2的話,while會先判斷不合理,不會去執行語句序列的。所以本題應該選用while循環。
它的編程如下:
#include
main()
{ int n;
int t=0;
scanf(“%d”,&n);
while(n!=0)
{ t=t+n;
scanf(“%d”,&n);
}
printf(“%d\n”,t);
}
總之,循環結構是C語言中程序設計中的一個重要知識點。教師在教學過程中,應讓學生掌握三種循環的區別和聯系。盡可能提高學生的學習積極性,點燃學生學習的熱情,讓學生能輸出正確的程序,輸出快樂的人生。
參考文獻:
[1]陳琳.編程語言基礎:C語言,高等教育出版社,2016,07
[2]陳琳.C語言學習輔導與上機實習, 高等教育出版社,2012,01
[3]譚浩強.C語言程序設計教程,高等教育出版社,2002