鄭英姿
摘要:目前,在很多高校, 對于計算機專業(yè)來說,《C語言》是一門非常重要的專業(yè)基礎(chǔ)課程,學習它的好壞,直接關(guān)系到后續(xù)課程的學習效果。C語言都被列為程序設(shè)計的入門語言,也是很多計算機專業(yè)學生學好《數(shù)據(jù)結(jié)構(gòu)》、《c++程序設(shè)計》等專業(yè)課的前提條件。而循環(huán)語句又是C語言學習中的一個重點與難點。根據(jù)本人的體會,淺談一下C語言循環(huán)語句的格式、執(zhí)行過程以及在學習、生活中的一些應(yīng)用。
關(guān)鍵字:while語句;do……While語句;for語句
一、引言
C語言是目前最受歡迎的語言之一,它具有強大的功能,語言簡潔,結(jié)構(gòu)緊湊,使用方便、靈活。在解決實際問題的過程中,常常會遇到一些需要重復處理的問題,循環(huán)結(jié)構(gòu)可用來處理需要重復處理的問題。在C語言中,有三種類型的循環(huán)語句: while語句、do……While語句和for語句。前兩個是條件循環(huán),即根據(jù)條件是否為真來判斷是否繼續(xù)循環(huán),后一個是計數(shù)循環(huán),即根據(jù)設(shè)定的循環(huán)次數(shù)來執(zhí)行循環(huán)。
一個完整的循環(huán)結(jié)構(gòu)一般由四部分組成:循環(huán)變量的初始化、循環(huán)控制條件、循環(huán)體、循環(huán)變量的增值,其中,循環(huán)變量的初始化是指在進入循環(huán)前,給循環(huán)變量賦初值,否則首次進入循環(huán)時,無法確定循環(huán)控制條件是否成立;循環(huán)控制條件是重復執(zhí)行循環(huán)體所需的條件,即當條件成立時執(zhí)行循環(huán)體,否則結(jié)束循環(huán);循環(huán)體是需要重復執(zhí)行的操作序列;循環(huán)變量是決定循環(huán)條件是否成立的變量;循環(huán)變量的增值反映了循環(huán)變量的改變規(guī)律,它使循環(huán)變量的值向著使循環(huán)結(jié)束的方向改變。
二、三種循環(huán)語句的格式及執(zhí)行過程
1、While 語句格式及執(zhí)行過程
while( 表達式)
循環(huán)體語句
while語句的執(zhí)行過程為:① 計算while后條件表達式的值。② 若表達式的值為真,則執(zhí)行循環(huán)體語句,然后判斷條件是否為真;如果為真,繼續(xù)循環(huán),如果為假,退出循環(huán),即結(jié)束while語句。
在使用while語句時,應(yīng)注意以下幾個問題:①循環(huán)體語句可以是簡單語句、復合語句或空語句。當循環(huán)體是一組語句時,必須用花括號括起來,組成復合語句。②while語句中的循環(huán)條件表達式可以是任何類型的表達式。③循環(huán)體內(nèi)一定要有使表達式的值變?yōu)?(假)的操作,否則循環(huán)將無限進行。④while語句的特點是“先判斷,后執(zhí)行”,如果循環(huán)條件表達式的值一開始就為0,則循環(huán)體語句一次也不執(zhí)行。
2、do……While 語句格式及執(zhí)行過程
do
{ 語句 }while(表達式);
其中,表達式是循環(huán)控制條件,語句是循環(huán)體,可以是簡單語句、復合語句或空語句。通常用復合語句,使得結(jié)構(gòu)更清楚。特別注意:該語句while(表達式)后加分號。
do_while語句的特點是“先執(zhí)行循環(huán)體,后判斷循環(huán)條件”,當條件成立時繼續(xù)執(zhí)行循環(huán)體,條件不成立時結(jié)束循環(huán)。因此,do_while循環(huán)常用來實現(xiàn)類似“直到型”循環(huán)的“當型”循環(huán)結(jié)構(gòu)。
for 語句格式及執(zhí)行過程
for 語句較前兩種循環(huán)語句更簡潔、更靈活,不僅用于計數(shù)型循環(huán),而且可以用于條件型循環(huán),特別是處理循環(huán)次數(shù)確定的問題。
for(表達式1;表達式2;表達式3)
循環(huán)體語句
其中,表達式1為賦初值表達式,表達式2為條件表達式,表達式3為循環(huán)變量增值表達式
該語句執(zhí)行過程: ①先對表達式1賦初值; ②判別表達式2是否滿足給定條件,若其值為真,滿足循環(huán)條件,則執(zhí)行循環(huán)體內(nèi)語句,然后執(zhí)行表達式3,進入第二次循環(huán),再判別表達式2,如此反復,直到判斷表達式2的值為假,不滿足條件,就終止for循環(huán),執(zhí)行循環(huán)體外語句。
使用for循環(huán)時,for語句的表達式可以部分或全部省略,但兩個“;”是不可以省略。①省略表達式1,這時沒有了給循環(huán)變量賦初值的操作,則應(yīng)該在for語句之前給循環(huán)變量賦初值。②省略表達式2,相當于缺少條件判斷,循環(huán)無限進行。③省略表達式3,則可以把循環(huán)變量的修改部分放到循環(huán)體中進行。④3個表達式全部省略,則for(;;)相當于while(1)。
三、break和continue語句
在C語言中,為了使循環(huán)控制更加靈活,C語言允許在特定條件成立時,使用break或continue語句跳過循環(huán)體其余語句,轉(zhuǎn)向循環(huán)條件的判定語句。
1、break語句
break語句的一般形式為:break;
break語句有兩個作用:用于switch語句時,退出switch語句,程序轉(zhuǎn)至switch語句下面的語句;用于循環(huán)語句時,退出包含它的循環(huán)體,程序轉(zhuǎn)至循環(huán)體下面的語句。
2、continue語句
continue語句的一般形式為:continue;
continue語句作用是:結(jié)束本次循環(huán),跳過循環(huán)體中尚未執(zhí)行的語句,接著進行下一次是否執(zhí)行循環(huán)的判斷。在while語句、do……While語句中,continue語句把程序控制轉(zhuǎn)到while后面的表達式處,在for語句中,continue語句把程序控制轉(zhuǎn)到表達式3處。
break和continue的區(qū)別:continue語句只結(jié)束本次循環(huán),而不是終止整個循環(huán)的執(zhí)行,break語句則是結(jié)束循環(huán),不再進行條件判斷。
四、循環(huán)語句的應(yīng)用分析
循環(huán)語句在學習、生活中有廣泛的應(yīng)用,我們通過例題進行分析說明循環(huán)語句的重要作用。
4.1例如輸入某班一門課的成績并計算其平均成績。(人數(shù)不定,當輸入成績?yōu)?1時結(jié)束)。
分析:本例的特點是“循環(huán)次數(shù)不確定”,而是已知循環(huán)結(jié)束的條件。循環(huán)的組成:①循環(huán)體:將有效成績score 加入部分和sum;輸入下一個成績score;
②循環(huán)控制條件:score!=-1;③ 循環(huán)變量的改變:用戶輸入;④循環(huán)變量的初值: 鍵盤輸入。
程序如下:
main()
{ float score,sum=0;
int n=0;
printf(" enter a score(-1 for end):");
scanf("%f",&score;);
while(score!=-1)
{ sum+=score;
n++;
printf(" enter a score(-1 for end):");
scanf(“%f”,&score;);
}
printf(" n=%d,aver=%f",n,sum/n);
}
例4.2 百錢買百雞:一百錢,買一百只雞,其中公雞3錢/只、母雞1錢/只、小雞3只/錢,問可買公雞、母雞、小雞個多少只?
分析:使用窮舉法求解。cock 在[0,33]的范圍內(nèi)取值,hen 在[0,100]的范圍內(nèi)取值,chick 在[0,100]的范圍內(nèi)取值,且只能取能被3整除的數(shù)。在以上的范圍內(nèi)找出所有滿足百錢買百雞的組合方式輸出出來即可。
#include
main()
{
int cock,hen,chick,n=0;
for(cock=0;cock<=33;cock++)
for(hen=0;hen<=100;hen++)
for(chick=0;chick<=100;chick+=3)
if(cock+hen+chick==100&&cock;*3+hen+chick/3==100)
printf("Answer %d:cock %d,hen %d,chick %d! ",++n,cock,hen,chick);
}
五、總結(jié)
絕大多數(shù)情況下,三種語句是通用的,并且代碼的差異不大。循環(huán)次數(shù)確定的程序,且組成循環(huán)的四個部分完整又簡潔的情況下,多采用for語句。循環(huán)體的語句至少執(zhí)行一次的情況下,多采用do_while語句。