第六章循環(huán)控制_第1頁(yè)
第六章循環(huán)控制_第2頁(yè)
第六章循環(huán)控制_第3頁(yè)
第六章循環(huán)控制_第4頁(yè)
已閱讀5頁(yè),還剩6頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、第六章 循環(huán)控制(一)選擇題【例6-1】 在循環(huán)語(yǔ)句結(jié)構(gòu)中,當(dāng)循環(huán)條件為( )時(shí),執(zhí)行循環(huán)體語(yǔ)句。A.0B.falseC.trueD.非0解析:當(dāng)循環(huán)控制條件表達(dá)式的值非零時(shí)為“真”,執(zhí)行循環(huán)體語(yǔ)句。答案:D舉一反三:在循環(huán)語(yǔ)句結(jié)構(gòu)中,循環(huán)條件為( )時(shí),結(jié)束循環(huán)。(答案:0)【例6-2】 以下程序的運(yùn)行結(jié)果是()main() int sum=0,i=11; do sum=sum+i; i+; while(i=10); prinf(“sum=%d,i=%d”,sum,i);A. sum=0,i=11 B. sum=0,i=12 C. sum=11,i=11 D. sum=11,i=12解析:d

2、o-while循環(huán)語(yǔ)句的執(zhí)行順序是先執(zhí)行循環(huán)體再判斷,因此循環(huán)體至少執(zhí)行一次。本題先執(zhí)行循環(huán)體sum=sum+i=11;i+;i增值為12,再判斷循環(huán)條件(i=10)不滿(mǎn)足,結(jié)束循環(huán)。答案:D舉一反三:若將此題循環(huán)部分改為: while(i=10) sum=sum+i;i+; 則輸出結(jié)果為:sum=0,i=11. while循環(huán)的執(zhí)行順序是先判斷循環(huán)條件滿(mǎn)足后再執(zhí)行循環(huán)體。【例6-3】 對(duì)循環(huán)語(yǔ)句:for(表達(dá)式1;表達(dá)式2;表達(dá)式3)語(yǔ)句,以下敘述正確的是( )。A. for語(yǔ)句中的三個(gè)表達(dá)式一個(gè)都不能少B. for語(yǔ)句中的循環(huán)體至少要被執(zhí)行一次C. for語(yǔ)句中的循環(huán)體可以是一個(gè)復(fù)合語(yǔ)句D

3、. for語(yǔ)句只能用于循環(huán)次數(shù)已經(jīng)確定的情況解析:選項(xiàng)A是錯(cuò)誤的。如果初始條件使表達(dá)式2為零,循環(huán)體就不會(huì)被執(zhí)行,所以,選項(xiàng)B錯(cuò)誤。for語(yǔ)句對(duì)于循環(huán)次數(shù)不確定的情況也是可以處理的,實(shí)際上while語(yǔ)句是能夠?qū)崿F(xiàn)的,for語(yǔ)句都可以實(shí)現(xiàn)。選項(xiàng)D是不對(duì)的。正確的應(yīng)該是選項(xiàng)C。l for語(yǔ)句中的三個(gè)表達(dá)式都是可以省略的。l 循環(huán)體可以是任何類(lèi)型的語(yǔ)句。答案:C【例6-4】 以下程序段執(zhí)行后i的值是( )。int i;for(i=1; i5; )i+;A3 B4 C5 D6解析:本題的for語(yǔ)句中表達(dá)式3省略了,循環(huán)變量的改變放在循環(huán)體中,先判斷表達(dá)式i5,然后執(zhí)行循環(huán)體i+。當(dāng)i=5時(shí),比較i0;

4、y-) if(y%3=0)printf(%d,-y);A.741B.852 C.963D.87521解析:在循環(huán)之前已經(jīng)給y賦初值9,for語(yǔ)句中省略了表達(dá)式1,y 0執(zhí)行循環(huán)體,當(dāng)y % 3 = = 0為“真”時(shí),輸出- - y;否則,不輸出,繼續(xù)執(zhí)行循環(huán),當(dāng)y 0不成立時(shí),退出循環(huán)。在for循環(huán)語(yǔ)句中,通常表達(dá)式1是給循環(huán)語(yǔ)句中的變量賦初值,如果省略了表達(dá)式1,那么要在循環(huán)之前給循環(huán)語(yǔ)句中的變量賦初值。答案:B【例6-7】 執(zhí)行完循環(huán)語(yǔ)句for(i=1,s=0;i+10;i+) s=s+i; 后,變量i,s的值各是多少?循環(huán)體被執(zhí)行了幾次?A. i的值是11,s的值是30,循環(huán)體執(zhí)行了6次

5、B. i的值是12,s的值是30,循環(huán)體執(zhí)行了6次C. i的值是11,s的值是30,循環(huán)體執(zhí)行了5次D. i的值是12,s的值是30,循環(huán)體執(zhí)行了5次解析:本題的for語(yǔ)句中循環(huán)變量的改變放在表達(dá)式2與表達(dá)式3中,先判斷表達(dá)式2:i+10,其中自增運(yùn)算符“+”的優(yōu)先級(jí)高于關(guān)系運(yùn)算符“”,所以先執(zhí)行表達(dá)式i+,表達(dá)式的值是i的值,而后i本身再加1,如第一次循環(huán)i=1,s=0,表達(dá)式i+的值為1,110條件成立,而i本身增值為2,此時(shí)執(zhí)行循環(huán)體s=0+2=2,然后執(zhí)行表達(dá)式3:i+;i增值為3。依次類(lèi)推,當(dāng)i=9時(shí),910條件滿(mǎn)足,i本身=10,s=2+4+6+8+10=30,之后執(zhí)行表達(dá)式3:i

6、+;i增值為11,此時(shí)比較1110(不滿(mǎn)足條件),i的值為12,退出循環(huán),此時(shí)循環(huán)體被執(zhí)行了5次(i=1,3,5,7,9時(shí),執(zhí)行循環(huán)體)。答案:D【例6-8】 若x,y是int型變量,執(zhí)行以下語(yǔ)句后x的值是( )。for(y=1,x=1;y=10) break;if(x%2=1) x+=5;continue;x-=3;A.1 B.6 C.7 D.10解析:當(dāng)x = 10為“真”執(zhí)行break;語(yǔ)句或當(dāng)y =10 break;x%2=1 x+=5;continuex-=3;完成本次循環(huán)后x的值第一次x=1,y=1假 不執(zhí)行真 執(zhí)行不執(zhí)行6第二次x=6,y=2假 不執(zhí)行 假 不執(zhí)行執(zhí)行3第三次x=

7、3,y=3假 不執(zhí)行真 執(zhí)行不執(zhí)行8第四次x=8,y=4假 不執(zhí)行 假 不執(zhí)行執(zhí)行5第五次x=5,y=5假 不執(zhí)行真 執(zhí)行不執(zhí)行10第六次x=10,y=6真 執(zhí)行,結(jié)束循環(huán)【例6-9】 對(duì)以下程序段,描述正確的是()。int k=10;while(k=0) k=k-1;A. 循環(huán)體執(zhí)行了10次 B. 循環(huán)是無(wú)限循環(huán)C. 循環(huán)體語(yǔ)句一次也不執(zhí)行 D. 循環(huán)體語(yǔ)句執(zhí)行了一次解析:表達(dá)式k=0是一個(gè)賦值表達(dá)式而不是一個(gè)關(guān)系表達(dá)式,將0賦值給k,且此表達(dá)式的值也為0,所以,循環(huán)體語(yǔ)句一次也不執(zhí)行。答案:C舉一反三:如果將程序段改為: int k=10; while(k!=0) k=k-1;那么,循環(huán)體

8、將被執(zhí)行10次。若再改為: int k=10; while(k=0) k=k-1;那么,循環(huán)體一次也不執(zhí)行。【例6-10】 對(duì)以下程序段,描述正確的是()。int k=10;while(k0) printf(%d,k);k=k-1;A被執(zhí)行了10次 B. 循環(huán)是無(wú)限循環(huán)C循環(huán)體一次也不執(zhí)行 D. 循環(huán)體語(yǔ)句執(zhí)行了1次解析:循環(huán)體語(yǔ)句是printf(“%d,”,k);沒(méi)有使循環(huán)趨于結(jié)束的語(yǔ)句,導(dǎo)致死循環(huán),k=k-1;不是循環(huán)體內(nèi)的語(yǔ)句。答案:B舉一反三:如果將程序段改為:int k=10; 或 int k=10;while(k0) while(k0) printf(“%d,”,k); print

9、f(“%d,”,k), k=k-1; k=k-1;加一對(duì)括號(hào),使循環(huán)體是一個(gè)復(fù)合語(yǔ)句或使用逗號(hào)表達(dá)式語(yǔ)句,那么,循環(huán)將是有限次的。還可以用以下方法,使循環(huán)成為有限的。l 將原題的printf(“%d,”,k);改成:printf(“%d,”,k - -);l 將原題的(k0)改成:(k - - 0)并且去掉k=k-1;等等。【例6-11】 下面程序的運(yùn)行結(jié)果是()。main() int i,j,k,x=0;for(i=0;i2;i+) x+;for(j=0;j3;j+) if(j%2) continue; x+;x+;k=i+j;printf(k=%d,x=%dn,k,x);A.k=8,x=4

10、 B.k=5,x=8 C.k=3,x=6 D.k=8,x=12解析:本例是一個(gè)二重循環(huán)結(jié)構(gòu),內(nèi)層循環(huán)在j=3時(shí)終止,外層循環(huán)在i=2時(shí)終止,故k=5。本程序的運(yùn)行情況見(jiàn)表6-2。表6-2 程序運(yùn)行情況初值x=0i=0執(zhí)行x+;(x=1)外 循 環(huán)j=0j%2為假執(zhí)行x+;(x=2)j=1j%2為真執(zhí)行continue;j=2j%2為假執(zhí)行x+;(x=3)j=3j3為假結(jié)束內(nèi)循環(huán)執(zhí)行x+;(x=4)執(zhí)行x+;(x=5)i=1內(nèi) 循 環(huán)j=0j%2為假執(zhí)行x+;(x=6)j=1j%2為真執(zhí)行continue;j=2j%2為假執(zhí)行x+;(x=7)j=3j3為假結(jié)束內(nèi)循環(huán)執(zhí)行x+;(x=8)i=2,i

11、2為假, 結(jié)束外循環(huán)(k=i+j=5)答案:B舉一反三:讀者要從循環(huán)體的有限次運(yùn)行中,找出規(guī)律,推出問(wèn)題的結(jié)論。在上述程序中,如果將外層循環(huán)的條件條件表達(dá)式“i2”改成“i100”,將內(nèi)層循環(huán)的條件表達(dá)式“j3”改成“j10”,那么,程序的運(yùn)行結(jié)果又如何呢?(答案:k=110,x=700)(二)閱讀程序題【例6-1】 以下程序的輸出結(jié)果是() main() int n;for(n=1;n=20;n+) if(n%3=0) continue;printf(“%d,”,n); 解析:當(dāng)n能被3整除時(shí),執(zhí)行continue語(yǔ)句,結(jié)束本次循環(huán)(即跳過(guò)printf函數(shù)語(yǔ)句),只有n不能被3整除時(shí)才執(zhí)行p

12、rintf函數(shù),所以此題是求在120內(nèi)不能被3整除的數(shù)。答案:1,2,4,5,7,8,10,11,13,14,16,17,19,20,舉一反三:若將本題中的continue;語(yǔ)句改為break;語(yǔ)句,則結(jié)果為:1,2,。 break語(yǔ)句的功能是當(dāng)滿(mǎn)足條件時(shí),跳出循環(huán)體,結(jié)束循環(huán)。因此,當(dāng)n=3時(shí),執(zhí)行break語(yǔ)句,循環(huán)結(jié)束。(三)完善程序題【例6-1】 為了輸出如下圖形,請(qǐng)?jiān)诔绦虻?處填入合適的內(nèi)容。* * * * * * * * * * * * * * * *main() int i,j;for(i=1;i6;i+) for(j=1;j5;j+) (1) ; (2) ;解析:使用循環(huán)嵌套。

13、循環(huán)變量i控制輸出行數(shù)(共5行),循環(huán)變量j控制每行輸出“*”的個(gè)數(shù),此外,還要考慮在每一行輸出完后,光標(biāo)要換行,所以,第一個(gè)空處應(yīng)該填入printf(“*”),第二個(gè)空處應(yīng)該填入printf(“n”).注意:printf(“n”);語(yǔ)句是外循環(huán)體中的一條語(yǔ)句,但它不是內(nèi)循環(huán)體中的語(yǔ)句,答案:(1)printf(“*”);printf(“n”);舉一反三:打印如下圖形:* * * * * * * * * * * * * * * * * * * * * * *main() int i,j;for(i=1;i6;i+) for(j=1;j10-i;j+)printf(“ ”); for(j=1;j

14、6;j+)printf(“*”);printf(“n”); 打印如下圖形: * * * * * * * * * * * * * * * * * * * * * * * * *main() int i,j, k;for(i=1;i=5;i+) for(j=1;j=5-i;j+) /*每行前輸出空格*/printf(“ ”); for(k=1; ;k+) /*每行輸出“*”號(hào)*/printf(“*”);printf(“n”);答案:k=2*i-1打印如下圖形:* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

15、* * * *main() int i,j;for(i=1;i10;i+) if(i6) for(j=1;j6-i;j+) /*輸出上半部分三角形*/ printf(“ ”);for(j=1; (1) ;j+)printf(“*”); else for(j=1;j=i-5;j+) /*輸出下半部分三角形*/ printf(“ ”);for(j=1; (2) ;j+)printf(“*”);printf(“n”);答案:(1)j=2*i-1(2)j=19-2*i【例6-2】用/4=1-1/3+1/5-1/7+公式求的近似值,直到某一項(xiàng)的絕對(duì)值小于10-6為止#includemain() int

16、s; float n,t,pi; t=1;pi=0;n=1.0;s=1; while( ) pi=pi+t;n=n+2;s=-s;t=s/n;pi=pi*4;printf(“pi=%fn”,pi);解析:while循環(huán)中,若想找到滿(mǎn)足循環(huán)的條件,可以先判斷出循環(huán)的結(jié)束條件,它的相反值即循環(huán)條件。本題的循環(huán)結(jié)束條件為某一項(xiàng)的絕對(duì)值小于10-6,則循環(huán)條件為某一項(xiàng)的絕對(duì)值大于10-6。答案:fabs(t)1e-6【例6-3】判斷m是否素?cái)?shù) main() int m,i,k; scanf(“%d”,&m); for(i=2;i=m)printf(“%d是一個(gè)素?cái)?shù)n”,m); else printf(“%d不是一個(gè)素?cái)?shù)n”,m); 解析:判斷一個(gè)數(shù)m是否素?cái)?shù)的條件是m能否被2m-1之中任何一個(gè)整數(shù)整除,如果能整除,則該數(shù)不是素?cái)?shù),提前結(jié)束循環(huán),此時(shí)i必然小于m;如果不能被整除,則在完成最后一次循環(huán)后,i還要加1,因此i=m,然后才終止循環(huán)。由于有兩種情況結(jié)束循環(huán),所以在循環(huán)之后判別i的值是否大于或等于m,若是,則表明未曾被2m-1之間任一整數(shù)整除過(guò),該數(shù)是素?cái)?shù),否則,不是素?cái)?shù)。因此本題空白處應(yīng)填提前結(jié)束

溫馨提示

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

評(píng)論

0/150

提交評(píng)論