版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、第3章循環(huán)結(jié)構(gòu)程序設(shè)計3.1典型等考試題剖析3.1.1選擇題【例1】若有如下程序段,其中s、a、b、c均已定義為整型變量,且a、c 均已賦值(c大于0)s=a;for(b=1;bc時循環(huán)結(jié)束,那么顯然s要加c次1。所以s的值 為a與c的和。答案:B【例2】設(shè)x和y均為int型變量,則執(zhí)行下面的循環(huán)后,y值為。 (等考1998年9月第29題)for(y=1,x=1;y=10) break;if(x%2=1)(x+=5;continue;x-=3;A) 2 B) 4 C) 6 D) 8考點:本例考查for循環(huán)中break和continue的用法,以及區(qū)別。分析:break用在循環(huán)中,只能退出一層循
2、環(huán)。尤其是在嵌套循環(huán)中, 只能退出它所在的那一層循環(huán)。不能期望用break從最內(nèi)層循環(huán)一下子 退出最外層循環(huán)(可以用goto實現(xiàn))。continue語句只能用在循環(huán)中, 它的作用是跳過其后面的語句,直接將控制轉(zhuǎn)移到下一輪循環(huán)條件的測 試。語句“if(x=10) break;”中的break只有當x=10時,才會執(zhí)行, 并且跳出for循環(huán);語句“x+=5;continue;”是每次執(zhí)行完一次跳過其 后面的語句,直接將控制轉(zhuǎn)移到下一輪循環(huán)條件的測試 for(y=1,x=1;y=50;y+)中。答案:C【例3】以下程序中,while循環(huán)的循環(huán)次數(shù)是。(等考2002年4 月第25題)main()( i
3、nt i=0;while(i10)(if(i1) continue;if(i=5) break;i+;A) 1 B) 10 C) 6D)死循環(huán),不能確定次數(shù)考點:本例考查while循環(huán)的用法,以及continue和break的分別。分析:本題要求的是循環(huán)次數(shù),首先要檢查while中的判斷條件,i10 是有限循環(huán),然后再觀察while內(nèi)部,if(i1) continue;第一次循環(huán) i=0,滿足if條件,執(zhí)行continue直接跳出循環(huán),不再執(zhí)行循環(huán)內(nèi)部的 其它語句,再次執(zhí)行while(i10),而此時i的值仍為0,無疑仍然重復(fù) 以上步驟,那么i的值沒有變化,循環(huán)繼續(xù),本題是死循環(huán)。答案:D【例
4、4】假定a和b為int型變量,則執(zhí)行以下語句后b的值 為。(等考1998年9月第32題)a=1;b=10;do(b-=a;a+;while(b-0);A) 9B) -2C) -1D) 8考點:本例考查do-while循環(huán)的用法。分析:第一次循環(huán)a=1,b減去a后b=9。然后執(zhí)行“while(b-3;j-)(if(j%3)j-;-j;-j;printf(%d ,j);A) 6 3 B) 7 4C) 6 2 D) 7 3考點:本例考查for循環(huán)的用法。分析:本題的難點可能是幾個“j-;”、-j;”容易讓人混淆第一次 循環(huán)j=10,j%3后j連續(xù)減三次1,得到7,繼續(xù)第二次循環(huán);第二次循 環(huán)j%3后
5、j連續(xù)減三次1,得到4,結(jié)束循環(huán)。答案:B【例6】在下列選項中,沒有構(gòu)成死循環(huán)的程序段是。(等考1999年4月第29題)int i=100;while(1)(i=i%100+1;if(i100) break;for(;);int k=1000;do(+k; while(k=1000);int s=36;while(s); -s;考點:本例考查死循環(huán)。分析:A)要退出循環(huán)必須滿足i100,但是執(zhí)行語句“i二i%100+1;”后, i不可能超過100; B)沒有循環(huán)條件,顯然為死循環(huán);C)經(jīng)過“k+”后, k的值一定是大于1000的,所以也為死循環(huán);D)中while的循環(huán)體語句 是個空語句,-s不
6、屬于while語句。答案:?【例7】運行以下程序后,如果從鍵盤上輸入china#回車,則輸出結(jié)果 為。(等考1999年4月第32題)#includemain()(int v1=0,v2=0;char ch;while(ch=getchar()!=#)switch(ch)(case a:case h:case o: v2+;default: v1+;printf(d,%dn,v1,v2);A) 2, 0B)5, 0C)5, 5D)5, 2考點:本例考查switch的用法。分析:本題的程序是為了檢查輸入字符中a、h、o的個數(shù)。答案:D【例8】以下程序的輸出結(jié)果是。(等考2002年4 月第26題)m
7、ain()(int a=0,i;for(i=1;i5;i+)( switch(i)( case 0:case 3:a+=2;case 1:case 2:a+=3;default:a+=5;printf(%dn,a);A) 31 B) 13 C) 10 D) 20考點:本例考查for循環(huán)中switch的用法。分析:可以看出此題和上一例題類型一樣,只不過上一例題考的是while 和switch,而此題考查的是for和switch。大家在分析歷年考題時會發(fā) 現(xiàn)很多題型多次重復(fù)出現(xiàn),所以我們在復(fù)習(xí)的過程中對以前試題要詳加 分析。分析本題得到,for 一共循環(huán)4次,每次循環(huán)內(nèi)部再執(zhí)行switch, 但是
8、有一個問題,本題的case沒有break語句結(jié)束,所以要從case i 一直執(zhí)行到default,這一點一定要注意!不難發(fā)現(xiàn),i=1時,a=a+3+5=8; i=2 時,a=a+3+5=16; i=3 時,a=a+2+3+5=16+10=26; i=4 時,a=a+5=31。答案:A【例9】以下程序的輸出結(jié)果是。(等考1999年4 月第46題)main()(int i,j,x=0;for(i=0;i2;i+)(x+;for(j=0;j3;j+)(if(j%2) continue;x+;printf(x=%dn,x);x=4B)x=8C)x=6D)x=12考點:本例考查for嵌套。分析:本題有兩
9、層for循環(huán),內(nèi)層for循環(huán)中嵌套if判斷。首先從 i=0,j=0 開始,x=x+1=0+1=1; j%2=0%2,則 x=x+1=1+1=2,再執(zhí)行內(nèi)層循 環(huán),i=0,j=1,x=3;繼續(xù) i=0,j=2,j%2=2%2=0,跳出循環(huán);再執(zhí)行 i=1, x=x+1=3+1=4;接著 i=1,j=0,x=5;i=1,j=1,x=6,再下來 j=2 跳出循環(huán), 最終x=6。這一題關(guān)鍵要看x能循環(huán)幾次。答案:C【例10】運行以下程序后,如果從鍵盤上輸入65 14,則輸出結(jié)果 為。(等考1999年4月第48題)main()(int m,n;printf(Enter m,n:);scanf(d,%d,
10、&m,&n);while(m!=n)(while(mn) m-=n;while(nm) n-=m;printf(m=%dn,m);A)m=3B)m=2C)m=1D)m=0考點:本例考查while嵌套。分析:本題主要是為了比較m和n的大小,用了兩層while循環(huán),直到 m=n 了才退出循環(huán)(注意循環(huán)結(jié)束的條件)。開始循環(huán)m=65 n=14, 6514, 所以執(zhí)行”while(mn)m-=n;”,m=m-n=65T4=51,又 5114,接著 m=m-n=51-14=37,直到 mm)n-=m;”, n=n-m=14-9=5,再執(zhí)行”while(mn)m-=n;”,m=m-n=9-5=4。4m)n
11、-=m;”,n=n-m=5-4=1,接下來mn,再繼續(xù)m=m-n,一 直到m=1,此時m=n=1不再循環(huán)。本題還可以這樣看,當mn時,循環(huán) 執(zhí)行m-n,所以65除以14,商4余9, 9是最終執(zhí)行m-n的結(jié)果m=9; 再來當nm時,循環(huán)執(zhí)行n-m,所以14除以9,商1余5,此時n=5, m=9, 接著mn,再執(zhí)行m-n,同樣9除以5,商1余4,m=4,n=5,再來用5 除以4,余1,此時n=1,最后不難得到m=1,m=n=1,不再循環(huán)。本題可 以看作是求m和n的公因數(shù)。答案:C【例11】有以下程序main()(int i=0,s=0;do (if (i%2) (i+; continue;i+;s
12、 += i; while(i7);printf(%dn, s);執(zhí)行后輸出結(jié)果是。(等考2003年4月第24題)A) 16 B) 12C) 28D) 21考點:本例考查continue。分析:初始賦值時s=0,由題意知s的值與i有關(guān)。if (i%2) i+; continue; 則 i=1,3,5 時,執(zhí)行 s+=i ;即 s=1+3+5+7=16。while(i7) 退出循環(huán)。答案:A3.1.2填空題【例1】以下程序運行后的輸出結(jié)果是 。(等考2003年9 月第9題)main()( int i,m=0,n=0,k=0;for(i=9; i=11;i+)switch(i/10)( case 0
13、: m+;n+;break;case 10: n+; break;default: k+;n+;printf(%d %d %dn,m,n,k);考點:本例考查for循環(huán)與switch的結(jié)合應(yīng)用。分析:for循環(huán)i從9開始到11,共循環(huán)3次,i=9時,i/10的值為0, 執(zhí)行 case 0, m=1, n=1; i=10 時,i/10 的值為 1,執(zhí)行 default, k=1, n=2; i=11 時,i/10 的值為 1,執(zhí)行 default, k=2, n=3。答案:132【例2】以下程序的功能是調(diào)用函數(shù)fun計算:m=1-2+3-4+9-10,并輸出 結(jié)果。請?zhí)羁铡?等考2003年9月第
14、11題)int fun( int n)( int m=0,f=1,i;for(i=1; i=n; i+)(m+=i*f;f= 【1】;return m;main()( printf(m=%dn, 【2】); 考點:本例考查函數(shù)調(diào)用中for的應(yīng)用。分析:此題要用到for循環(huán),關(guān)鍵問題在于循環(huán)的次數(shù)和對加減數(shù)的處 理,顯然本題要循環(huán)10次,所以,n的值為10。注意到奇數(shù)加,偶數(shù)減 所以m+二i*f中的f用到正負數(shù)變化,f = -f或f*-1或-1*f或f*(-1) 或(-1)*f,最終打印的m值是由fun函數(shù)計算的,intn的值應(yīng)該由主 函數(shù)傳入10。答案:【1】f = -f 或 f*-1 或-1
15、*f 或 f*(-1)或(-1)*f;【2】fun(10) 【例3】下面程序的功能是:計算1到10之間奇數(shù)之和及偶數(shù)之和,請?zhí)羁铡?等考2000年4月第10題)main()(int a,b,c,i;a=c=0;for(i=0;i10;i+=2)(a+=i;c+=b;printf(偶數(shù)之和二%dn”,a);printf(奇數(shù)之和二%dn”,c-11);考點:本例考查for的簡單應(yīng)用。分析:在做填空題的時候,先要看整個程序的流程,然后再考慮如何填 入語句以符合題意。本題要得到的是1 10之間的奇、偶數(shù)之和, for(i=0;i10;i+=2)此語句共執(zhí)行5次,顯然a+=i是為了得到偶數(shù)之和, 那么
16、c+=b應(yīng)該是求奇數(shù)之和,而且是由前一個我們需要填入的語句決 定,b是每次加入的數(shù)據(jù),那么要填的語句應(yīng)該是b的取值,i是0、2、4、6、8,那么b應(yīng)該是1、3、5、7、9,可以由i得來,所以b=i+1。答案:b=i+1【例4】下面程序的功能是:輸出100以內(nèi)能被3整除且個位數(shù)為6的所有整 數(shù),請?zhí)羁铡?等考2000年4月第11題)#include main()( int i, j;for(i=0;【1】 ; i+)(j=i*10+6;if(【2】) continue;printf(%d,j);考點:本例考查環(huán)了和continue的結(jié)合使用。分析:本題需要輸出100以內(nèi)能被3整除且個位數(shù)為6的所
17、有整數(shù)。先 看程序流程。答案:【1】(1)i10 & x8;y=+i)printf(%d %d ”,x-,y);A) 10 1 9 2B) 9 8 7 6C) 10 9 90D) 10 10 9 1以下程序的輸出結(jié)果是。main()( int n=4;while(n-)printf(%d ,-n);A) 2 0B) 3 1C) 3 2 1D) 2 1 0執(zhí)行下面程序片段的結(jié)果是。int x=23;do(printf(%2d,x-);while(!x);A) 321B) 23C)不輸出任何內(nèi)容D)陷入死循環(huán)以下程序的輸出結(jié)果是。main()(int i;for(i=1;i6;i+)(if(i%2
18、)printf(#); continue;printf(*);printf(n);A) #*#*#B) #C) *D) *#*#*以下循環(huán)體的執(zhí)行次數(shù)是。main()( int i,j;for(i=0,j=1; i=j+1; i+=2, j-)printf(%d n,i);A) 3B) 2C) 1D) 0有如下程序main()( int i,sum;for(i=1;i=3;sum+) sum+=i;printf(%dn,sum);該程序的執(zhí)行結(jié)果是。A) 6B) 3C) 死循環(huán)D) 0有以下程序段int n=0,p;doscanf(“d”,&p);n+;while(p! = 12345 &n6
19、)(n- ;printf(%d,n);該程序段的輸出結(jié)果是。987B) 876C) 8765D) 9876以下程序的輸出結(jié)果是。main()(int i;for(i=,A,;i,I,;i+,i+)printf(%c,i+32);printf( n);編譯不通過,無輸出B) acegC) acegiD) abcdefghi有以下程序段int k=0while(k=1)k+;while循環(huán)執(zhí)行的次數(shù)是。A)無限次 B)有語法錯,不能執(zhí)行C) 一次也不執(zhí)行D)執(zhí)行1次以下程序執(zhí)行后sum的值是。main()( int i , sum;for(i=1;i6;i+) sum+=i;printf(“dn”
20、,sum);A) 15B)14C)不確定D)0有以下程序main()( int i;for (i=0; i3; i+)switch (i)( case 1: printf(%d , i);case 2: printf(%d , i);default : printf(%d , i);執(zhí)行后輸出結(jié)果是。A) 011122B) 012C) 012020D) 120以下程序的輸出結(jié)果是。main()( int num= 0;while(num=2)(num+; printf(%dn,num); TOC o 1-5 h z A) 1B) 1C)1D) l2234以下程序的輸出結(jié)果是。main()(in
21、t a,b;for(a=1,b=1;a=10) break;if(b%3=1)(b+=3;continue;printf(%dn,a);D) 4A) 101B) 6C) 5有以下程序main()( int k=4,n=0;for( ; n1;n-)s=s+1/n;printf(%6.4fn,s);程序運行后輸出結(jié)果錯誤,導(dǎo)致錯誤結(jié)果的程序行是。A) s=1.0;B) for(n=10;n1;n-) C) s=s+1/n; D)printf(%6.4fn,s);執(zhí)行以下程序后,輸出的結(jié)果是。main()(int y=10;do(y-;while(-y);printf(%dn,y-);D)0A)
22、-1 B) 1C) 8執(zhí)行語句:for(i=1;i+4;)后,變量i的值是。A) 3B) 4C) 5D)不定以下程序的輸出結(jié)果是。#include void main()( int k=0,m=0;int i, j;for(i=0;i2;i+)(for(j=0;j3;j+)k+;k-=j;m=i + j;printf(k=%d, m=%d”, k, m);C)k=1,m=3A)k=0,m=3B)k=0,m=5D)k=1,m=5當執(zhí)行以下程序段時int x;x=-1;do(x=x*x;while(!x);A)循環(huán)體將執(zhí)行一次兩次C)循環(huán)體將執(zhí)行無限次法錯誤當執(zhí)行以下程序時。x=-1;do(x=x
23、*x;while(!x)A)循環(huán)體將執(zhí)行一次C) 循環(huán)體將執(zhí)行無限次下述循環(huán)程序。for(a=0,b=0;a=10000);if(i100) break;C) for(;);s=36;while(s); -s;若程序執(zhí)行時的輸入數(shù)據(jù)是“2473”,則下述程序的輸出結(jié)果是 #include void main()(B)循環(huán)體將執(zhí)行D)系統(tǒng)將提示有語B)循環(huán)體將執(zhí)行兩次D)系統(tǒng)將提示有語法錯誤B)循環(huán)次數(shù)不定D)循環(huán)4次B) intdo+k;D) intint cx;while(cx=getchar()!=n)(switch(cx-2)(case 0:case 1: putchar(cx+4);c
24、ase 2: putchar(cx+4); break;case 3: putchar(cx+3);default: putchar(cx+2);A)668977B)668966C)6677877D)6688766從以下給出的表達式中選擇與while(E)語句中的(不能等價的表達式A) (!E=0) B) (E0)| (E0)C)(E=0)D)(E!=0)以下敘述正確的是。do-while語句構(gòu)成的循環(huán)不能用其他語句構(gòu)成循環(huán)。do-while語句構(gòu)成的循環(huán)只能用break語句退出。用do-while語句構(gòu)成的循環(huán),在while后的表達式為非0時結(jié)束循環(huán)。用do-while語句構(gòu)成的循環(huán),在wh
25、ile后的表達式為0時結(jié)束循環(huán)。 對for(表達式1;表達式3)可理解為。for(表達式1; 0 ;表達式3)for(表達式1; 1 ;表達式3)for(表達式1;表達式1 ;表達式3)for(表達式1;表達式3 ;表達式3)C語言中用于結(jié)構(gòu)化程序設(shè)計的三種基本結(jié)構(gòu)是。A)順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)B) if、switch、breakC) for、 while、 do-whileD) if、 for、 continue以下程序的功能是:按順序讀入10名學(xué)生4門課程的成績,計算出每位學(xué)生 的平均分并輸出,程序如下:main()( int n,k;float score ,sum,ave;sum
26、=0.0;for(n=1;n=10;n+)(for(k=1;k=4;k+)(scanf(“f”,&score); sum+=score;ave=sum/4.0;printf(“NO%d:%fn”,n,ave);上述程序運行后結(jié)果不正確,調(diào)試中發(fā)現(xiàn)有一條語句出現(xiàn)在程序中的位置不正 確。這條語句是。A) sum=0.0;B) sum+=score;C) ave=sun/4.0;D) printf(“NO%d:%fn”,n,ave);3.2.2填空題要使以下程序段輸出10個整數(shù),請?zhí)钊胍粋€整數(shù)。for(i=0;i=; printf(%dn, i+=2);下面程序的功能是計算1到20之間的奇數(shù)之和偶數(shù)
27、之和,請?zhí)羁铡?include void main()(int a,b,c,i;a=c=0;for(i=0;i=10;i+=2)(a+=i;c+=b;printf(偶數(shù)之和:dn”,a);printf(奇數(shù)之和:dn”,c-21);下面程序的輸出結(jié)果是。#include void main()(int a=100,b=0;do(b=b+a;a-;while(a2);printf(%dn,b);設(shè)有如下程序段:int i=0,sum=1;do(sum+=sum;i+;while(i6);printf(%dn,sum);上述程序段的輸出結(jié)果是。已知如下公式:n /2 = 1+1/3+(1/3)(2
28、/5)+ (1/3)(2/5)(3/7) +(1/3)(2/5)(3/7)(4/9)+函數(shù)pi的功能時根據(jù)上述公式計算滿足精度要求的n值。請?zhí)羁?。double pi(double eps)(double s=0.0,t=1.0;int n;for(n=1; 【1】;n+)(s+=t;t=n*t/(2*n+1)return 【2】; 執(zhí)行以下程序后,輸出#號的個數(shù)是 。#include main()(int i,j;for(i=1; i5; i+)for(j=2; j=i; j+) putchar(#);以下程序的功能是調(diào)用函數(shù)fun計算:m=1-2+3-4+19-20,并輸出結(jié)果,請 填空。i
29、nt fun( int n)(int m=0,f=1,i;for(i=1; i=n; i+)(m+=i*f;f= 【1】;return m;main()(printf(m=%dn, 【2】);下述程序利用二分法求方程在(一10, 10)之間的根。請?zhí)羁铡?include #include void main()(float eps=1.0E-5;float x0=0.0,x1=3.0,x=(x0+x1)/2.0;float mid=(5*x-4)*x+3)*x-6;while( 【1】)(if(5*x0-4)*x0+3)*x0-6)*【2 】0)x1=x;elsex0=x;x=(x0+x1)/2.0;【3】二(5*x-4)*x+3)*x-6;printf(root=%f,x);下述程序接收來自鍵盤的輸入,直到按+Z (值為一
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度上海租車租賃合同含長途過路費代繳
- 二零二五版年薪制勞動合同法實施細則與員工保密責(zé)任條款4篇
- 二零二五年度旅游民宿運營免責(zé)合同協(xié)議
- 2025年度個人商鋪租賃合同范本:含裝修補貼及設(shè)施設(shè)備清單4篇
- 2025年度生態(tài)公園土建項目施工合同
- 2025年度民間個人借款擔(dān)保合同范本:信用擔(dān)保與風(fēng)險分擔(dān)
- 二零二五年度農(nóng)用拖拉機二手市場評估與交易合同3篇
- 2025年度農(nóng)民專業(yè)合作社股權(quán)并購與整合合同4篇
- 2025年度個人房產(chǎn)買賣風(fēng)險評估合同范本2篇
- 2025年度個人知識產(chǎn)權(quán)許可使用合同范本9篇
- 拆遷評估機構(gòu)選定方案
- 趣味知識問答100道
- 鋼管豎向承載力表
- 2024年新北師大版八年級上冊物理全冊教學(xué)課件(新版教材)
- 人教版數(shù)學(xué)四年級下冊核心素養(yǎng)目標全冊教學(xué)設(shè)計
- JJG 692-2010無創(chuàng)自動測量血壓計
- 三年級下冊口算天天100題(A4打印版)
- 徐州市2023-2024學(xué)年八年級上學(xué)期期末地理試卷(含答案解析)
- CSSD職業(yè)暴露與防護
- 飲料對人體的危害1
- 移動商務(wù)內(nèi)容運營(吳洪貴)項目三 移動商務(wù)運營內(nèi)容的策劃和生產(chǎn)
評論
0/150
提交評論