第5章 循環(huán)結構_第1頁
第5章 循環(huán)結構_第2頁
第5章 循環(huán)結構_第3頁
第5章 循環(huán)結構_第4頁
第5章 循環(huán)結構_第5頁
已閱讀5頁,還剩66頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、第第5章章 循環(huán)結構循環(huán)結構* *考點考點01:while語句語句 5.1 while語句及用語句及用while語句構成的語句構成的循環(huán)結構循環(huán)結構(當型當型) 1. 形式:形式:while(表達式表達式) 語句語句(循環(huán)體循環(huán)體)例如例如 while(i0) printf(*) ; i+; 。 2. 說明:說明:while是是C語言的關鍵字,表達式的語言的關鍵字,表達式的值數(shù)據(jù)類型任意,用于控制循環(huán)體是否執(zhí)行。值數(shù)據(jù)類型任意,用于控制循環(huán)體是否執(zhí)行。3. 執(zhí)行執(zhí)行 S1. 計算表達式的值,當值非計算表達式的值,當值非0, 執(zhí)行執(zhí)行S2;值為;值為0執(zhí)行執(zhí)行S4。S2. 執(zhí)行循環(huán)體中的語句。執(zhí)

2、行循環(huán)體中的語句。S3. 轉去執(zhí)行轉去執(zhí)行S1。S4. 退出退出while循環(huán)循環(huán)。例例5-1 求求2+4+6+98+100=? main( ) int sum,i; sum=0;i=2; while(i0) x1=(x2+1)*2; /*第第1天的桃子數(shù)是第天的桃子數(shù)是第2天桃子數(shù)加天桃子數(shù)加1后的后的2倍倍*/ x2=x1; day-; printf(The total is %d !n,x1); 運行結果為:運行結果為:The total is 1534 !運行例運行例5-3注意:注意:(1) “當當”型是指當循環(huán)條件滿足時,就執(zhí)行循型是指當循環(huán)條件滿足時,就執(zhí)行循 環(huán);環(huán);“直到直到”

3、型指執(zhí)行循環(huán)直到不滿足循環(huán)條型指執(zhí)行循環(huán)直到不滿足循環(huán)條件為止。件為止。(2) 如果在第一次進入循環(huán)時,表達式的值為如果在第一次進入循環(huán)時,表達式的值為0,循環(huán)一次也不執(zhí)行。循環(huán)一次也不執(zhí)行。(3) 循環(huán)控制變量是在循環(huán)條件中控制條件是真循環(huán)控制變量是在循環(huán)條件中控制條件是真是假的變量。要編寫正確的循環(huán)結構,需對循是假的變量。要編寫正確的循環(huán)結構,需對循環(huán)控制變量做環(huán)控制變量做3個工作:循環(huán)控制變量正確賦個工作:循環(huán)控制變量正確賦初值、將循環(huán)控制變量寫入正確的循環(huán)條件、初值、將循環(huán)控制變量寫入正確的循環(huán)條件、循環(huán)控制變量的更新、調整。循環(huán)控制變量的更新、調整。(4) 在循環(huán)體中一定要有使循環(huán)趨

4、于結束在循環(huán)體中一定要有使循環(huán)趨于結束的操作,否則形成死循環(huán)的操作,否則形成死循環(huán)(循環(huán)條件永遠循環(huán)條件永遠滿足滿足),這時循環(huán)將永遠進行下去,只有,這時循環(huán)將永遠進行下去,只有Ctrl+Break(Pause)強制退出。強制退出。(5) 在循環(huán)體中,語句的先后位置必須符在循環(huán)體中,語句的先后位置必須符合邏輯,如合邏輯,如i+這樣的循環(huán)控制變量更新這樣的循環(huán)控制變量更新的語句位置必須正確,否則運算過程中的語句位置必須正確,否則運算過程中可能會漏掉一項多加一項,如例可能會漏掉一項多加一項,如例5-1中的中的i+=2在前則結果為在前則結果為2650。歷年真題精解歷年真題精解1. 有以下程序有以下程

5、序 main() int a=1,b=2; while(a6) b+=a; a+=2; b%=10; printf(%d,%dn,a,b); 程序運行后的輸出結果是程序運行后的輸出結果是(1009)A) 5,11 B) 7,1 C) 7,11 D) 6,1答案:答案: B解析:解析: 16執(zhí)行循環(huán),執(zhí)行循環(huán),b=b+a=2+1=3、a=a+2=3、b=b%10=3%10=3;36繼續(xù)循環(huán),繼續(xù)循環(huán),b=3+3=6、a=3+2=5、b=6%10=6;56結束循環(huán)。結束循環(huán)。 2. 有以下程序有以下程序 main() int y=10; while(y-); printf(y=%dn,y); 程序

6、執(zhí)行后的輸出結果是程序執(zhí)行后的輸出結果是(1009)A) y=0 B) y=-1 C) y=1 D) while構成無限循環(huán)構成無限循環(huán)答案:答案: B解析:解析: 要結束循環(huán),表達式要結束循環(huán),表達式y(tǒng)-值值為為0;-在后,故在后,故y后減后減1=-1。 3. 有以下程序有以下程序 main() int n=2,k=0; while(k+&n+2); printf(%d %dn,k,n); 程序運行后的輸出結果是程序運行后的輸出結果是(0909) A) 0 2 B) 1 3 C) 5 7 D) 1 2答案:答案: D解析:解析: 先計算表達式先計算表達式k+的值為的值為0,則,則求值

7、短路,求值短路,n+2沒有執(zhí)行;沒有執(zhí)行;循環(huán)沒有執(zhí)行,但此時循環(huán)沒有執(zhí)行,但此時k為為1,所以選所以選D。 4. 有以下程序有以下程序 main( ) char c1,c2; scanf(%c,&c1); while(c190) scanf(%c,&c1); c2=c1+32; printf(%c,%cn,c1,c2); 程序運行輸入程序運行輸入65回車后,能否輸出結果、結束回車后,能否輸出結果、結束運行(請回答能或不能)運行(請回答能或不能)(0903) 。答案:答案: 不能不能解析:解析: 因為因為c1為字符變量,所以輸入為字符變量,所以輸入65等價于輸?shù)葍r于輸入入6和和

8、5,6的的ASCII碼值為碼值為54,滿足循,滿足循環(huán)條件,故系統(tǒng)繼續(xù)讀入環(huán)條件,故系統(tǒng)繼續(xù)讀入5,5的的ASCII碼值為碼值為53,仍然滿足循環(huán)條件,仍然滿足循環(huán)條件,n的的ASCII碼值為碼值為10,仍然滿足循環(huán)條件,故,仍然滿足循環(huán)條件,故系統(tǒng)會等待下一個數(shù)據(jù)的輸入。只有繼續(xù)系統(tǒng)會等待下一個數(shù)據(jù)的輸入。只有繼續(xù)輸入直到不滿足循環(huán)條件為止,才能有輸輸入直到不滿足循環(huán)條件為止,才能有輸出結果。出結果。 5. 下列程序運行時,若輸入下列程序運行時,若輸入labced12df 輸出結果為輸出結果為(0903) #include void main( ) char a=0,ch; while(ch

9、=getchar()!=n ) if(a%2!=0&(ch=a &ch=z ) ch=ch-a +A ; a+;putchar(ch); printf(n); 答案:答案: lAbCdE12dF 解析:解析: 循環(huán)結束條件為輸入回車;第一次循環(huán)時循環(huán)結束條件為輸入回車;第一次循環(huán)時a%2為為0,則直接執(zhí)行則直接執(zhí)行a+;putchar(ch);輸輸出出l且且a為為1;第二次;第二次a%2為為1,且且a為小寫為小寫字母字母,則將則將ch轉換成轉換成A, 輸出輸出A且且a為為2;至;至此可得規(guī)律,輸入的第此可得規(guī)律,輸入的第1、3、5、7、9字字符原樣輸出,而第符原樣輸出,而第2、

10、4、6、10字符小寫字符小寫變大寫輸出,第變大寫輸出,第8字符為字符為2不滿足不滿足&右側右側條件,故原樣輸出。條件,故原樣輸出。 6. 有以下程序有以下程序 main() int k=5; while(-k) printf(%d,k-=3); printf(n); 執(zhí)行后的輸出結果是執(zhí)行后的輸出結果是(0609) A) 1 B) 2 C) 4 D) 死循環(huán)死循環(huán)答案:答案: A解析:解析: -k為為4非非0輸出輸出k-=3表達式表達式(k=4-3)的值為的值為1,再判斷,再判斷-k為為0,結束循環(huán)。結束循環(huán)。 * *考點考點02:do-while語句語句1. 形式:形式: do 語句

11、語句(循環(huán)體循環(huán)體) while(表達式表達式);例如例如 do i+;s+=i; while (i10);。;。5.2 do-while語句及用語句及用do-while語句構成的循環(huán)結構語句構成的循環(huán)結構(直到型直到型) 2. 說明:說明: do是是C語言的關鍵字,必須與語言的關鍵字,必須與while聯(lián)聯(lián)合使用。循環(huán)由合使用。循環(huán)由do開始,到開始,到while結束;結束;必須注意必須注意while(表達式表達式)后的后的“;”不能不能缺少,它代表缺少,它代表do-while語句的結束。語句的結束。 3. 執(zhí)行執(zhí)行 S1. 執(zhí)行執(zhí)行do后面循環(huán)體中的語句。后面循環(huán)體中的語句。S2. 計算表達

12、式的值,當值非計算表達式的值,當值非0,執(zhí)行,執(zhí)行S1; 否則退出否則退出do-while循環(huán)。循環(huán)。 例例5-4 輸入并輸出一串字符,遇輸入并輸出一串字符,遇“!”結束。結束。 #include void main() char c; do c=getchar(); putchar(c); while(c!=!); 運行例運行例5-4例例5-5 輸入一個正整數(shù),然后按反向輸出。比如輸入輸入一個正整數(shù),然后按反向輸出。比如輸入123456則輸出則輸出654321。 分析:個位上的數(shù)通過模分析:個位上的數(shù)通過模10得到得到,十位上的數(shù)通過除十位上的數(shù)通過除10再模再模10得到得到,其余依此類推其

13、余依此類推;循環(huán)條件為商不等于循環(huán)條件為商不等于0。 main() long n; printf(Please input a integer: ); scanf(%ld,&n);printf(The reverse order is: ); do printf(%ld, n%10); n/=10; while(n); printf(n); 運行例運行例5-5注意注意:(1) do-while與與while的區(qū)別是的區(qū)別是 do-while是先執(zhí)行循環(huán)再判斷循環(huán)是先執(zhí)行循環(huán)再判斷循環(huán)條件,所以無論表達式的值是條件,所以無論表達式的值是0還是還是非非0,循環(huán)體至少要被執(zhí)行一次。,循環(huán)體至

14、少要被執(zhí)行一次。(2) 與與while語句一樣,在循環(huán)體中一語句一樣,在循環(huán)體中一定要有使循環(huán)趨于結束的操作。定要有使循環(huán)趨于結束的操作。歷年真題精解歷年真題精解1. 下程序運行后的輸出結果是下程序運行后的輸出結果是(0909) main() int a=1,b=7; do b=b/2; a+=b; while (b1); printf(%dn,a); 答案:答案: 5解析:解析: 第一次循環(huán)第一次循環(huán)b=3,a=4,31執(zhí)行執(zhí)行第二次循環(huán);第二次循環(huán);b=1,a=5,1不大不大于于1,結束循環(huán)。,結束循環(huán)。 * *考點考點03:for語句語句1. 形式:形式: for (表達式表達式1;表達

15、式表達式2;表達式表達式3) 語句語句(循環(huán)體循環(huán)體);例如例如 for(k=0;k10;k+) printf(*); 。5.3 for語句及用語句及用for語句語句構成的循環(huán)結構構成的循環(huán)結構(當型當型) 2. 說明:說明:for是是C語言的關鍵字。表達式語言的關鍵字。表達式1通常用來給循環(huán)控制變量賦初值,也允通常用來給循環(huán)控制變量賦初值,也允許在許在for語句前給循環(huán)控制變量賦初值語句前給循環(huán)控制變量賦初值;表達式表達式2通常是循環(huán)條件;表達式通常是循環(huán)條件;表達式3通常通常用來更新循環(huán)控制變量的值。用來更新循環(huán)控制變量的值。3. 執(zhí)行執(zhí)行S1. 計算表達式計算表達式1的值。的值。S2.

16、計算表達式計算表達式2的值,若值非的值,若值非0則執(zhí)行循則執(zhí)行循環(huán)體一次,環(huán)體一次, 否則跳出循環(huán)。否則跳出循環(huán)。S3. 計算表達式計算表達式3的值,轉回的值,轉回S2重復執(zhí)行。重復執(zhí)行。 注意注意:(1) for語句中的各表達式都可省略,但語句中的各表達式都可省略,但“;”不不能少。如能少。如for(;表達式表達式;表達式表達式)、for(表達式表達式;表達式表達式)、for(表達式表達式;表達式表達式;)、 for(;)。(2) 要省略表達式要省略表達式1,則應在循環(huán)前給循環(huán)控制,則應在循環(huán)前給循環(huán)控制變量賦初值;要省略表達式變量賦初值;要省略表達式2,則應在循環(huán)體,則應在循環(huán)體內(nèi)有使循環(huán)

17、結束的條件;要省略表達式內(nèi)有使循環(huán)結束的條件;要省略表達式3,則,則應將表達式應將表達式3作為循環(huán)體的最后一條語句。作為循環(huán)體的最后一條語句。(3) 直接省略表達式直接省略表達式2或表達式或表達式3,很可能造成,很可能造成死循環(huán)。死循環(huán)。例例5-6 一位百萬富翁遇到一個陌生人,陌生人找一位百萬富翁遇到一個陌生人,陌生人找他談一個換錢計劃:我每天給你十萬元,而你他談一個換錢計劃:我每天給你十萬元,而你第一天只需給我一分錢;第二天我仍給你十萬第一天只需給我一分錢;第二天我仍給你十萬元,你給我二分錢;第三天我仍給你十萬元,元,你給我二分錢;第三天我仍給你十萬元,你給我四分錢你給我四分錢你每天給我的錢

18、是前一天的你每天給我的錢是前一天的兩倍,直到滿一個月兩倍,直到滿一個月(30天天)。百萬富翁很高興,。百萬富翁很高興,欣然接受了這個契約。請編寫一個程序計算這欣然接受了這個契約。請編寫一個程序計算這一個月中陌生人給了百萬富翁多少錢,百萬富一個月中陌生人給了百萬富翁多少錢,百萬富翁給了陌生人多少錢。翁給了陌生人多少錢。 分析:等差數(shù)列和等比數(shù)列。陌生人的增量為分析:等差數(shù)列和等比數(shù)列。陌生人的增量為1000000,百萬富翁為,百萬富翁為2倍,循環(huán)控制變量倍,循環(huán)控制變量230。 main() int n,i; long s=1,k=1,t=100000; for(i=2;i=30;i+) k*=

19、2; s+=k; t+=100000; s=s/100; /*將以分為單位換為以元為單位將以分為單位換為以元為單位*/ printf(millionaire give stranger: %ld$n stranger give millionaire: %ld$n,s,t); 運行例運行例5-6例例5-7 古典問題:有一對兔子,從出生后古典問題:有一對兔子,從出生后第第3個月起每個月都生一對兔子,小兔子個月起每個月都生一對兔子,小兔子長到第三個月后每個月又生一對兔子,長到第三個月后每個月又生一對兔子,假如兔子都不死,問每個月的兔子總對假如兔子都不死,問每個月的兔子總對數(shù)為多少?(斐波那契數(shù)列)

20、數(shù)為多少?(斐波那契數(shù)列) 分析:使用遞推法。每個月兔子總對數(shù)分析:使用遞推法。每個月兔子總對數(shù)為為1,1,2,3,5從第三個月開始,從第三個月開始,每項是前兩項之和;循環(huán)控制變量每項是前兩項之和;循環(huán)控制變量120。main() long f1=1,f2=1; int i; for(i=1;i=20;i+) printf(%12ld%12ld,f1,f2); if(i%2=0) printf(n); /*控制輸出,每行四個控制輸出,每行四個*/ f1=f1+f2; /*前兩個月加起來賦值給第三個月前兩個月加起來賦值給第三個月*/ f2=f1+f2; /*前兩個月加起來賦值給第三個月前兩個月加

21、起來賦值給第三個月*/ 運行例運行例5-7例例5-8 打印出所有的打印出所有的“水仙花數(shù)水仙花數(shù)”,所謂所謂“水仙花數(shù)水仙花數(shù)”是指一個三位是指一個三位數(shù),其各位數(shù)字立方和等于該數(shù)數(shù),其各位數(shù)字立方和等于該數(shù)本身。如本身。如153是一個是一個“水仙花數(shù)水仙花數(shù)”,因為因為153=13+53+33。 分析:每個數(shù)要分解出個位,十分析:每個數(shù)要分解出個位,十位,百位,然后用位,百位,然后用if進行判斷;控進行判斷;控制變量制變量100999。 main() int i,j,k,n; printf(Water flower number is: ); for(n=100;n1000;n+) i=n/

22、100; /*分解出百位分解出百位*/ j=(n-i*100)/10; /*分解出十位分解出十位*/ k=n%10; /*分解出個位分解出個位*/ if(i*i*i+j*j*j+k*k*k=n) printf(%d ,n); printf(n); 運行例運行例5-8歷年真題精解歷年真題精解1. 有以下程序有以下程序 main() int f,f1,f2,i; f1=0; f2=1; printf(%d%d,f1,f2); for(i=3;i=5;i+) f=f1+f2; printf(%d,f); f1=f2; f2=f; printf(n); 程序運行后的輸出結果是程序運行后的輸出結果是(0

23、909)答案:答案: 01123解析:解析: 首先輸出首先輸出f1、f2的值的值01,然后執(zhí),然后執(zhí)行第一次循環(huán),輸出行第一次循環(huán),輸出f的值的值1,f1變變成成1、f2還是還是1;第二次循環(huán),輸;第二次循環(huán),輸出出f的值的值2,f1還是還是1、f2變成變成2;第;第三次循環(huán),輸出三次循環(huán),輸出f的值的值3。 2. 有以下程序有以下程序main( ) int c=0,k; for(k=1;k0;y-) if(y%3=0) printf(%d,-y); 程序的運行結果是程序的運行結果是(0709)A) 741 B) 963 C) 852 D) 875421答案:答案: C解析:解析: 滿足滿足y

24、%3=0的只有的只有9、6、3,所以輸出為所以輸出為8、5、2(-y)。* *考點考點04:循環(huán)結構的嵌套循環(huán)結構的嵌套1. while() for() 2. do for() while();2. for() while() 4. for() for() 5.4 循環(huán)結構的嵌套循環(huán)結構的嵌套 例例5-9 輸出輸出9*9口訣??谠E。分析:先打印分析:先打印*123456789再分行與列考慮,共再分行與列考慮,共9行行9列,列,i控制行,控制行,j控制列??刂屏?。main() int i,j; printf(*); for(i=1;i10;i+) printf(%6d,i); printf(n)

25、; for(i=1;i10;i+) printf(%d,i); for(j=1;j10;j+) printf(%6d,i*j); printf(n); 運行例運行例5-9 例例5-10 百錢買百雞問題。公元錢五世紀,我國百錢買百雞問題。公元錢五世紀,我國古代數(shù)學家張丘建在古代數(shù)學家張丘建在算經(jīng)算經(jīng)一書中提出了一書中提出了“百雞問題百雞問題”:雞翁一值錢五,雞母一值錢三,:雞翁一值錢五,雞母一值錢三,雞雛三值錢一。百錢買百雞,問雞翁、雞母、雞雛三值錢一。百錢買百雞,問雞翁、雞母、雞雛各幾何?雞雛各幾何? 分析:根據(jù)題意,雞翁最多為分析:根據(jù)題意,雞翁最多為19(100/5),雞,雞母最多母最多3

26、3(100/3),雞雛的個數(shù)為,雞雛的個數(shù)為100-雞翁個雞翁個數(shù)數(shù)-雞母個數(shù),所以使用二重循環(huán),外循環(huán)為雞雞母個數(shù),所以使用二重循環(huán),外循環(huán)為雞翁翁0-19窮舉、內(nèi)循環(huán)為雞母窮舉、內(nèi)循環(huán)為雞母0-33窮舉,內(nèi)循環(huán)窮舉,內(nèi)循環(huán)體為雞雛賦值語句、使用體為雞雛賦值語句、使用if來控制輸出的為滿來控制輸出的為滿足條件的百雞個數(shù)。足條件的百雞個數(shù)。 main( ) int cocks,hens,chicks; for(cocks=1;cocks=19;cocks+) for(hens=1;hens=33;hens+) chicks=100-cocks-hens; if(5*cocks+3*hens+c

27、hicks/3=100& chicks%3=0) printf(%d,%d,%dn,cocks,hens,chicks); 運行例運行例5-10歷年真題精解歷年真題精解1. 以下程序中的變量已正確定義以下程序中的變量已正確定義 for(i=0;i4;i+,i+) for(k=1;k=1;i-) for(j=1;j=2;j+) printf(%d,i+j); printf(n); 程序的運行結果是程序的運行結果是(0809)A) 2 3 4 B)4 3 2 C)2 3 D)4 5 3 4 5 5 4 3 3 4 3 4 4 5 2 3答案:答案: D解析:解析: 外循環(huán)共執(zhí)行外循環(huán)共執(zhí)行

28、3次次(i由由3到到1),內(nèi)循,內(nèi)循環(huán)執(zhí)行環(huán)執(zhí)行2次次(j由由1到到2) ,且外循環(huán),且外循環(huán)最好一條語句為換行,所以輸出最好一條語句為換行,所以輸出結果有結果有3行,每行有兩個數(shù)據(jù)。而行,每行有兩個數(shù)據(jù)。而第一次第一次3+1=4、3+2=5,故選,故選D。3. 以下程序的輸出結果是以下程序的輸出結果是(0809) #include void main() int i,j,sum; for(i=3;i=1;i-) sum=0; for(j=1;j=i;j+) sum+=i*j; printf(%dn,sum); 答案:答案: 1解析:解析: 外循環(huán)共執(zhí)行外循環(huán)共執(zhí)行3次次(i由由3到到1),內(nèi)

29、循,內(nèi)循環(huán)隨環(huán)隨i遞減次數(shù)依次為遞減次數(shù)依次為3、2、1(j=i) ,且每次外循環(huán)開始,且每次外循環(huán)開始sum被重新賦值為被重新賦值為0,故只需要分析最,故只需要分析最后一次外循環(huán)。后一次外循環(huán)。sum+=1*1,故答,故答案為案為1。4. 有以下程序有以下程序(0809) #include void main() int i,j,m=55; for(i=1;i=3;i+) for(j=3;j=i;j+) m=m%j; printf(%dn,m); 程序的運行結果是程序的運行結果是(0709)A) 0 B) 1 C) 2 D) 3答案:答案: B解析:解析: 當外循環(huán)當外循環(huán)i的值為的值為1、

30、2時,內(nèi)循時,內(nèi)循環(huán)一次也不執(zhí)行環(huán)一次也不執(zhí)行 ,當外循環(huán),當外循環(huán)i的的值為值為3時,內(nèi)循環(huán)執(zhí)行一次,時,內(nèi)循環(huán)執(zhí)行一次,m=m%3,所以,所以m的值為的值為1。* *考點考點05:break語句語句1. 只能在循環(huán)體內(nèi)和只能在循環(huán)體內(nèi)和switch語句內(nèi)使用語句內(nèi)使用break語句。語句。 2. 當當break出現(xiàn)在循環(huán)體中的出現(xiàn)在循環(huán)體中的switch語句語句體內(nèi)時,其作用只是跳出該體內(nèi)時,其作用只是跳出該switch語句語句體;當出現(xiàn)在循環(huán)體中,但并不在體;當出現(xiàn)在循環(huán)體中,但并不在switch語句體內(nèi)時,則在執(zhí)行語句體內(nèi)時,則在執(zhí)行break后,后,跳出本層循環(huán)體跳出本層循環(huán)體。 5

31、.5 break語句和語句和continue語句語句例例5-11 用用break語句改寫例語句改寫例5-4:輸入并輸出一:輸入并輸出一個字符,遇個字符,遇“!”結束。結束。 #include main() char c; for(;) c=getchar(); putchar(c); if(c=!) break; 運行例運行例5-11 例例5-12 求求1+2+3+n=?,當該值大于,當該值大于5000時提前結束。時提前結束。 main() int i,s; s=0; for(i=1;i;i+) s=s+i; if(s5000) break; printf(s=%dn,s); 運行例運行例5-

32、12歷年真題精解歷年真題精解1. 有以下程序有以下程序main() int i,j,m=1; for(i=1;i0;j-) if(i*j3) break; m*=i*j; printf(m=%dn,m); 程序運行后的輸出結果是程序運行后的輸出結果是(1003)。A) m=6 B) m=2 C) m=4 D) m=5答案:答案: A解析:解析: 外循環(huán)控制變量外循環(huán)控制變量i由由13,內(nèi)循環(huán),內(nèi)循環(huán)控制變量控制變量j由由31;故當;故當i為為2、j為為3時時(2*33),即外循環(huán)執(zhí)行第二,即外循環(huán)執(zhí)行第二次、內(nèi)循環(huán)執(zhí)行第一次時循環(huán)提次、內(nèi)循環(huán)執(zhí)行第一次時循環(huán)提前結束。此時前結束。此時m=m*i

33、*j=1*1*3*1*2*1*1=6。 2. 有以下程序有以下程序 main() int i=5; do if(i%3=1) if(i%5=2) printf(*%d,i); break; i+; while(i!=0); printf(n); 程序的運行結果是程序的運行結果是(0809)A) *7 B)*3*5 C)*5 D)*2*6答案:答案: A解析:解析: 只有同時滿足只有同時滿足i%3=1和和i%5=2才能執(zhí)行才能執(zhí)行break使循使循環(huán)結束,故最小為環(huán)結束,故最小為7(i+),故,故輸出結果為輸出結果為*7。* *考點考點06:continue語句語句1. 在在while和和do-

34、while循環(huán)中,循環(huán)中,continue語語句使句使 得流程直接跳到循環(huán)控制條件的測得流程直接跳到循環(huán)控制條件的測試部分,然后決定循環(huán)是否繼續(xù)進行。試部分,然后決定循環(huán)是否繼續(xù)進行。2. 在在for循環(huán)中,遇到循環(huán)中,遇到continue后,跳過循后,跳過循環(huán)體中余下的語句,而去對環(huán)體中余下的語句,而去對for語句中的語句中的表達式表達式3求值,然后進行表達式求值,然后進行表達式2的條件的條件測試,最后根據(jù)表達式測試,最后根據(jù)表達式2的值來決定的值來決定for循循環(huán)是否執(zhí)行。環(huán)是否執(zhí)行。 例例5-13 把輸入串中除小寫元音字母以外的字符把輸入串中除小寫元音字母以外的字符打印出來。打印出來。#

35、include main() char c; while(c=getchar()!=n) if(c=a|c=e|c=i|c=o|c=u) continue; putchar(c); 運行例運行例5-131. 以下程序運行后的輸出結果是以下程序運行后的輸出結果是(0903) main( ) int k=1,s=0; do if(k%2)!=0) continue; s+=k;k+; while(k10); printf(s=%dn,s); 歷年真題精解歷年真題精解答案:答案: s=0解析:解析: 進入循環(huán),進入循環(huán),k為為1,k%2=1故執(zhí)故執(zhí)行行continue,判斷循環(huán)條件,判斷循環(huán)條件k0;x-) if(x%3) printf(%d,x-); continue; printf(%d,-x); 程序的運行結果是程序的

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論