第2章C++測試答案_第1頁
第2章C++測試答案_第2頁
第2章C++測試答案_第3頁
第2章C++測試答案_第4頁
第2章C++測試答案_第5頁
已閱讀5頁,還剩13頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、第2章 測試習題1單項選擇題(1)putchar函數可以向終端輸出一個( D )。A整型變量表達式值 B實型變量值C字符串 D字符或字符型變量值 (2) int k=10;while(k=0) k=k-1;則下面描述正確的是( C )。Awhile循環執行10次 B循環是無限循環C循環體語句一次也不執行 D循環體語句執行一次(3)int x=0,s=0;while(!x!=0) s+=+x;cout<<s;則( B)。A運行程序段后輸出0 B運行程序段后輸出1C程序段中的控制表達式是非法的 D程序段執行無限次(4) int x=0,y=0;while(x<15) y

2、+,x+=+y;cout<<y<<”,”<<x;則運行結果為( D )。A20,7 B6,12 C20,8 D8,2 (5) int a=1,b=2,c=2;while(a<b<c) t=a;a=b;b=t;c-;cout<<a<<”,”<<b<<”,”<<c;運行結果為( A )。A1,2,0 B2,1,0 C1,2,1 D2,1,1(6)int x=-1;do x=x*x;while(!x);下列說法正確的是( C )。A是死循環 B循環執行兩次C循環執行一次 D有語法錯誤(7)以下

3、能正確計算1*2*3*10的程序段是( C )。Ado i=1;s=1; Bdo i=1;s=0;s=s*i; i+; s=s*i;i+; while(i<=10); while(i<=10);C i=1;s=1; Di=1;s=0; do s=s*i; dos=s*i;i+; i+;while(i<=10); while(i<=10);(8)以下描述正確的是( C )。A由于do-while循環中循環體語句只是一條可執行語句,所以循環體內不能使用復合語句Bdo-while循環由do開始,用while結束,在while(表達式)后面不能寫分號C在do-while循環體中

4、,一定要有能使while后面表達式的值變為零(“假”)的操作Ddo-while循環中,根據情況可以省略while(9)C+語言中while和do-while循環的主要區別是(A )。Ado-while的循環體至少無條件執行一次Bwhile的循環控制條件比do-while的循環控制條件嚴格Cdo-while允許從外部轉到循環體內Ddo-while的循環體不能是復合語句(10)下面有關for循環的正確描述是( D )。Afor循環只能用于循環次數已經確定的情況Bfor循環是先執行循環體語句,后判斷表達式C在for循環中,不能用break語句跳出循環體Dfor循環的循環體語句中,可以包含多條語句,但

5、必須用大括號括起來(11)對for(表達式1; ;表達式3)可理解為( B )。Afor(表達式1;0;表達式3) Bfor(表達式1;1;表達式3)Cfor(表達式1;表達式1;表達式3) Dfor(表達式1;表達式3;表達式3)(12)for(i=2;i= =0;) printf(“%d”,I-); 循環執行的次數是( B )。A無限次 B0次 C1次 D2次(13)下面程序段的運行結果為( C )。for(y=1;y<10;) y=(x=3*y,x+1),x-1);cout<<“x=”<<x<<”y=”<<y;Ax=27,y=27 B

6、x=12,y=13Cx=15,y=14 Dx=y=27(14)以下不是無限循環的語句為(D )。Afor(y=0,x=1;x>+y;x=I+) I=x; Bfor( ; ;x+=I);Cwhile(1)x+; Dfor(I=10; ;I-) sum+=I;(15)下面程序的運行結果是( D )。#include<iostream.h>viod main( )int i,b,k=0; for(i=1;i<=5;i+) b=i%2; while(b- - >=0) k+; cout<<k<<”,”<<b; A3,-1 B8,-1 C

7、3,0 D8,-2(16)以下正確的描述是( B )。Acontinue語句的作用是結束整個循環的執行B只能在循環體內和switch語句體內使用break語句C在循壞體內使用break語句或continue語句的作用相同D從多層循環嵌套中退出,只能使用goto語句(17)下面程序段( D )。for(t=1;t<=100;t+) cin>>x; if(x<0) continue; cout<<t;A當x<0時整個循環結束 Bx>=0時什么也不輸出Ccout永遠也不執行 D最多允許輸出100個非負整數(18)下面程序段( B )。x=3;do y=

8、x-; if(!y) cout<<”x”; continue;cout<<”#”; while(1<=x<=2);A將輸出# B將輸出#*C是死循環 D含有不合法的控制表達式(19)下面程序的運行結果是(B )。#include<iostream.h>void main()int a,b; for(a=1,b=1;a<=100;a+) if(b>=20) break; if(b%3= =1) b+=3;continue; b-=5;cout<<a<<endl; A7 B8 C9 D10(20)下面程序段的運行結

9、果是(B )。#include<iostream.h>void main( ) int i,j,x=0; for(i=0;i<2;i+) x+; for(j=0;j<=3;j+) if(j%2) continue; x+; x+; cout<<“x=”<<x<<endl; Ax=4 Bx=8 Cx=6 Dx=12(21)下面程序段的運行結果是(A )。#include<iostream.h>void main()int i; for(i=1;i<=5;i+) if(I%2) cout<<“*”; else

10、 continue;cout<<“#”; cout<<“$n”; A*#*#*#$ B#*#*#*$ C*#*#$ D#*#*$(22)下面程序段的運行結果是( A )。#include<iostream.h>void main( ) int i,j,a=0; for(i=0;i<2;i+) for(j=0;j<4;j+) if(j%2) break; a+; a+; cout<<a<<endl;A4 B5 C6 D72填空題:(1)下面程序段是從鍵盤輸入的字符中統計數字字符的個數,用換行符結束循環,請填空。int n=0

11、,c;c=cin.get();while (c!=n ) if( c>=0&&c<=9 ) n+; c=cin.get() ;(2) 1020個西瓜,第一天賣一半多兩個,以后每天賣剩下的一半多兩個,問幾天以后能賣完?#include<iostream.h>main( )int day, x1, x2; day=0;x1=1020; while( x1>0 ) x2=( x1/2-2 );x1=x2;day+;cout<<x1<<endl;cout<<“day=”<<day<<endl; (

12、5)運行下面程序段后,k值為( 36 )。k=1;n=263;do k*=n%10;n/=10; while(n);(6)下面程序段中循環體的執行次數是( 3 )。a=10;b=0;dob+=2;a-=2+b; while(a>=0); (7)下面程序段的運行結果為( * )。 x=2;docout<<“*”;x-; while(!x= =0);(8)下面程序段的運行結果是( a=-5 )。i=1;a=0;s=1; do a=a+s*i;s=-s;i+; while(I<=10); cout<<“a=”<<a ; (9)下面程序段的運行結果是(

13、)。 for(a=1,i=-1;-1<=i<1;i+) a+;cout<<x<<y<<endl; 分析:本題循環條件是假值,所以什么也不輸出。 (10) 雞、兔共有30只,腳共有90個,下面程序段是計算雞兔各有多少只,x代表有多少只雞,y代表有多少只兔子,請填空。for(x=1;x<=29;x+)y=30-x; if( 2*x+4*y= =90 ) cout<x<< <<y;(11) 下面程序的功能是從3個紅球、5個白球、6個黑球中任意取出8個球,且其中必須有白球,輸出所有可能的方案,請填空。#include&

14、lt;iostream.h>void main()int i,j,k;cout<<“n hong bai hei n”; for(i=0;i<=3;i+) for( j=1 );j<=5;j+) k=8-i-j; if( k>0 && k<=6 ) cout<<i<< <<j<< <<k<<endl; (12)下面程序的功能是求出用數字0至9可以組成多少個沒有重復的三位偶數,請填空。#include<iostream.h>void main() int

15、n=0,i,j,k; for(i=1;i<=9;i+) for(k=0;k<=8;( k+=2 ) i f(k!=i)for(j=0;j<=9;j+) if( j!=i && j!=k ) n+;cout<< “n=”<<n<<endl;  3看程序,寫結果(1)#include<iostream.h>void main() int i=0,x=0,y=0; do +i;if(i%2!=0) x=x+i;i+;y=y+i+;while(i<=7); cout<<“x=”<<

16、x<<”y=”<<y; 運行結果:x=1,y=20(2) #include<iostream.h>void main()int i,t,sum=0; for(t=i=1;i<=10; ) sum+=t;+i; if(i%3= =0) t=-i; else t=i; cout<<“sum=”<<sum; 運行結果:sum=19(3) nclude<iostream.h>void main( )int i; for(i=1;i<=5;i+) switch(i%2)case 0:i+; cout<<“#”

17、;break; case 1:i+=2; cout<<“*”; default: cout<<“n”; 運行果為:*#(4) #include<iostream.h>void main()int y=2,a=1; while(y-!=-1) do a*=y;a+; while(y-); cout<<a<<y; 運行結果 :1 -2(5) #include<iostream.h> void main()int i,j; for(i=4;i>=1;i-) for(j=1;j<=i;j+) putchar(#); f

18、or(j=1;j<=4-i;j+) putchar(*); putchar(n); 運行結果:#*#*#*(6) #include<iostream.h>void main() int i,k=0; for(i=1; ;i+) k+;if(k%3= =0) break; cout<<i<<k; 運行結果:3 3(7) #include<iostream.h>void main( )int i=1; while(i<=15) if(+i%3!=2) continue; else cout<<i<<t; cout&

19、lt;<“n”; 運行結果:2 5 8 11 14(8) #include<iostream.h>void main()int a=10,y=0; do a+=2;y+=a;if(y>50) break; while(a=14);cout<<“a=”<<a<<” y=”<<y; 運行結果:a=16 y=60(9) #include<iostream.h>void main()int i, k=19;while(i=k-1) k-=3; i f(k%5= =0) i+;continue; else if(k<

20、;5) break; i+; cout<<“i=”<<i<<”k=”<<k; 運行結果:i=6 k=4(10) #include<iostream.h>void main()int i=5; do switch(i%2) case 4:i-;break; case 6:i-;continue; i-;i-; cout<<i; while(i>0); 運行結果:3 1 -1 4按下列要求編寫程序(1)有一個函數如下: x (x<5) y= x+6 (5<=x<15) x-6 (x>=1

21、5) 輸入x的值,計算出相應的y值。程序為:#include<iostream.h>void main()int x,y;cin>>x;if(x<5) y=5;if(x>=5&&x<15)y=x+6; if(x>=15) y=x-6;cout<<y<<endl;(2)編程要求輸入整數a和b,若a2+b2大于100,則輸出a2+b2百位以上的數字,否則輸出兩數之和。程序為:#include<iostream.h>int main()int a,b,n;cin>>a>>b;c

22、out<<"a="<<a<<'t'<<"b="<<b<<endl;if(a*a+b*b>100) n=(a*a+b*b)/100;else n=a+b;cout<<n<<endl;return 0;(3)根據/4 =1-1/3+1/5-1/7+求的近似值,直到最后一項的值小于0.000001為止。程序為:#include<iostream.h>#include<math.h>int main() double i,

23、p,pai;i=1;pai=0;dop=pow(-i,i-1)*1.0/(2*i-1);pai=pai+4*p;while(p>=0.000001);cout<<"pai="<<pai<<endl;return 0;(4)編程輸出如下圖形:(例n=6) * * * * * * 程序為:方法1:#include<iostream.h>void main()int i,j,k; for(i=1;i<=6;i+) for(k=1;k<=20-2*i;k+) cout<<' '

24、for(j=1;j<=4*i-3;j+) cout<<'*' cout<<endl; 方法2:#include <iostream.h> int main() int i,j; for(i=1;i<=6;i+) for (j=1;j<=12-2*i;j+) cout<<" " for(j=13-2*i;j<=9+2*i;j+) cout<<"*" cout<<endl;return 0; (5)求1!+2!+3!+8!。程序為:#include

25、 <iostream.h>int main()int i;double m=1.0,s=0.0;for(i=1;i<=8;i+)m=m*i;s=s+m;cout<<s<<endl;return 0;(6)打印出所有的“水仙花數“(它是一個三位數,其各位數字立方和等于該數本身)。程序為:#include <iostream>#include <iomanip>using namespace std;int main()int a,b,c,n,m;cout<<"所有的"水仙花數":"

26、;<<endl;for( a=1;a<=9;a+)for(b=0;b<=9;b+)for(c=0;c<=9;c+)n=100*a+10*b+c;m=a*a*a+b*b*b+c*c*c;if(n=m&&n<=999) cout<<n<<endl;return 0;(7)編寫一個程序,輸入年、月,打印出該年份該月的天數。程序為:#include<iostream.h>void main()int year,month, days; cin>>year>>month; switch(mon

27、th) case 1: case 3: case 5: case 7: case 8: case 10: case 12:days=31;break; case 4:case 6: case 9: case 11: days=30;break; case 2: if(year%400=0 | year%4=0 &&year%100!=0) days=29; else days=28; cout<<year<<"年"<<month<<"月有"<<days<<"

28、天n"(8)輸入一個自然數,輸出其各因子的連乘形式,如輸入12,則輸出12=1*2*2*3。程序為:方法1:#include<iostream.h>void main() int i,n; cin>>n; cout<<"n="<<"1" for(i=2;i<=n;) if(n%i=0) n=n/i; cout<<"*"<<i;continue; i+; cout<<endl; 方法2:#include<iostream.h>

29、void main()int n,i; cin>>n; cout<<n<<"=1" i=2; while(n>1) while(n%i=0) cout<<"*"<<i; n=n/i; i+;(9)求一個整數任意次方的最后三位數。程序為: #include <iostream>#include <cmath>using namespace std;int main()int a,b,n;cout<<"輸入a,n:"<<end

30、l;cin>>a>>n;cout<<a<<"的"<<n<<"次方的最后三個數字是:"b=pow(a,n);b%=1000;if(b>=100) cout<<b<<endl;if(b<100&&b>=10) cout<<"0"<<b<<endl;else if(b<10) cout<<"00"<<b<<endl;

31、return 0;法2:#include<iostream.h>void main()int x,n,p=1,i; cin>>x>>n; for(i=1;i<=n;i+) p=p*x%1000; cout<<p<<endl;(10)猴子吃桃問題。猴子第一天摘下若干個桃子,當即吃了一半,還不過癮,又多吃了一個。第二天早上又將剩下的桃子吃掉一半,又多吃了一個。以后每天早上都吃了前一天剩下的一半零一個。到第10天早上想再吃時,發現只剩一個桃子了,求猴子第一天究竟摘了多少個桃子?程序為:#include<iostream.h>

32、;void main() int p=1,i; for(i=1;i<=9;i+) p=(p+1)*2; cout<<p<<endl;5選擇題(1)以下程序的輸出結果是( C )。 #include<iostream.h> void main() int a=100,x=10,y=20,ok1=5,ok2=0; if(x<y) if(y!=10) if(!ok1) a=1; else if(ok2) a=10; a=-1; cou<<a<<endl; A1 B0 C-1 D值不確定(2)以下不正確的if語句形式是( C )

33、。Aif(x>y && x!=y); Bif(x= =y) x+=y;Cif(x!=y)cin>>x else cin>>y; Dif(x<y)x+;y+;(3)設有以下程序段,則( B )。int a=0, b=0;while(!a!=0) b+=+a;cout<<b;A程序運行后輸出0 B程序運行后輸出1C程序執行無數次 D循環控制條件表達式是非法的(4)當a=1,b=3:c=5,d=4時,執行下面一段程序后x的值是( B )。 if(a<b)) if(c<d) x=1; else if(a<c) if(b&

34、lt;d) x=2; else x=3; else x=6; else x=7;A1 B2 C3 D6(5)以下for循環的循環次數是( C )。for(x=0, y=0; (y=123)&&(x<4); x+);A是無限循環B循環次數不定C執行4次D執行3次(6)下面程序的運行結果是( A )。#include<iostream.h>void main() int x=6,y=8; if(x+<6) cout<<+y<<endl; if(x>6) cout<ßy<<endl; else cout

35、<<y+<<endl; A8 B9 C 7 D編譯不成功(7)關于for循環語句下面不正確的是( A )。 A在循環體中,不能改變循環控制變量B在執行中循環控制變量初值、終值可變C循環控制變量可增可減D循環控制變量不必在說明部分說明(8)下列寫法中等價的是( B D )。A若x=1,則while(x!=x)與while(x)B若x=0,則while(x!=x)與while(x)C若x=1,則while(x!=0)與while(!x)D若x=0,則while(x=0)與while(!x)(9)執行語句for(i0; i+<3;)后,變量i的值為( C )。A2 B3

36、 C4 D5(10)下面程序的運行結果是( D )。#include<iostream.h>void main() int x=10,y=10,i;for(i=7; x>i; y-=9, +i, x-) cout<<x<<” “<<y<<” “; A10 1 9 2 B9 8 7 6 C10 9 9 0 D10 10 9 1(11)若int x3;且有下面的程序片段,則輸出結果為( C )。do x-=2;cout<<x; while(!(- -x);A1 B3 0 C1 -2 D死循環(12)下面程序的運行結果是(

37、 C )。#include<iostream.h>void main() int num=0; while(num<=2) num+; cout<<num<<endl; A1B1C1D1 2 2 23                              

38、;                       34(14)下列程序段不是死循環的是( A )。Aint i=100; while(1) i=i%100+1; if(i>100) break; Bfor( ; ;)Cint k=0; do+k; while(k>=0);Dint s=36; while(s); -s;(15)下面程序的運行結果是( A )。#incl

39、ude<iostream.h>void main() int a, y; a=10; y=0; do a+=2; y+=a; if(y>50) break; while(a=14);cout<<”a=”<<a<<”y=”<<y; Aa=16 y=60 Ba=15 y=50 Ca=14 y=50 Da=14 y=606填空題(1)下面程序的運行結果是_-1_。#include<iostream.h>void main() int a=2,b=3,c;c=a;if(a>b) c=1;else if(a= =b) c

40、=0; else c=-1;cout<<c;(2)若所用變量都已正確定義,以下程序段的輸出結果_y=7 x=21 _xy0;while(x<20)y+;x+=3; cout<<”y=”<<y<<”x=”<<x;(3)下面程序的運行結果是_*#_。#include<iostream.h>void main() int i, j=4;for(i=j; i<=2*j; i+)switch(i/j) case 0: case 1: cout<<”*”; break; default: cout<<

41、;”#”; (4)輸入一個字母,如果它是一個大寫字母,則把它變成小寫字母;如果它是一個小寫字母,則把它變成大寫字母;其它字符不變。填入正確內容。#include<iostream.h>void main() char ch; cin>>ch; if(_ ch>=65&&ch<=90_) ch=ch+32; else if(ch>=a &&ch<=z)_ch=ch-32_; cout<<ch<<endl;(5)讀下面的程序,要使輸出結果t=4,輸入變量a和b應滿足條件_a>0&&

42、amp;a<b_。#include<iostream.h>void main() int s,t,a,b; cin>>a>>b; s=1;t=1; if(a>0)s=s+1; if(a>b)t=s+t; else if(a= =b)t=5; else t=2*s; cout<<”s=”<<s<<”x=”<<x<<endl;(6)從鍵盤輸入若干個學生的成績,統計并輸出最高成績和最低成績,當輸入負數時結束輸入,完成下面的程序填空。#include<iostream.h>vo

43、id main() float mark, max, min; _mark=cin.get()_; max=mark;min=mark;while(_ mark >=0_) if(mark>max) max=mark; if(mark<min) min=mark; _ mark=cin.get()_cout<<”max is:”<<max<<andl;cout<<”min is:”<<min;(7)下面程序的功能是計算100至1000之間有多少個數其各位數字之和是5。#include<iostream.h>

44、;void main() int i, s, k, cout=0; for(i=100;i<1000;i+) s=0; k=i; while(_k!=0_) s=s+k%10; k=_k/10_; if(s!=5) _continue_; else count+; cout<<cout;(8)下面程序的功能是輸出1至200之間每位數的乘積大于每位數的和的數。#include<iostream.h>void main() int n, k=1, s=0, m; for(n=1; n<=100; n+) k=1; s=0; _m=n_; while(_m!=0_

45、) k*=m%10; s+=m%10; _m=m/10_; if(k>s) cout<<n; 7  看程序寫結果(1)#include<iostream.h> void main() int x,y,z;x=1;y=2;z=3;x=y-<=x|x+y!=z;cout<<x<<'t'<<y<<endl; 輸出:1 1(2)#include<iostream.h> void main() int x,y,z; if(y!=0) x=5; cout<<x&l

46、t;<endl; if(y=0) x=4; else x=5; cout<<x<<endl; x=1; if(y<0)if(y>0)x=4;else x=5; cout<<x<<endl; 輸出:5 5 5(3)#include<iostream.h> void main() int a=2,b=7,c=5;switch(a>0)case 1: switch(b<0) case 1:cout<<"" break; case 2:cout<<"!&quo

47、t; break;case 0: switch(c=5) case 0:cout<<"*"break; case 1:cout<<"#" break; default:cout<<"#" break;default: cout<<"&"<<endl; 輸出:#&(4)#include<iostream.h> void main() int i=1,s=3; do s+=i+; if(s%7= =0) continue; else

48、 +i; while(s<15);cout<<i<<endl; 輸出:8(5)#include<iostream.h> void main() int i;for(i=4; i<=10; i+) if(i%3= =0) continue; cout<<i<<” “;輸出:4 5 7 8 10(6)#include<iostream.h> void main() int i, x; for(i=1; i<100; i+) x=i; if(+x%2= =0)if(+x%3= =0) if(+x%7= =0)

49、cout<<x<< ;輸出:28 70(7)#include<iostream.h> void main() int k,j,m; for(k=5;k>=1;k-) m=0; for(j=k;j<=5;j+) m=m+k*j; cout<<m<<endl;輸出:15(8)設輸入為4時,程序的輸出結果#include<iostream.h> void main() int i,j,n; long sum,term;cin>>n; for(sum=0,i=1;i<=n;+i) term=1; j=

50、1; do term *=i; while (+j<=i); sum+=term; cout<<"sum"<<sum; 輸出:sum288(9)#include<iostream.h>void main() int a, s, n, count; a=2; s=0; n=1; count=1;while(count<=7) n=n*a; s=s+n;+count;cout<<"s="<<s;輸出:s=254(10)#include<iostream.h> void mai

51、n() int x, y; x=0; y=0; do y+; x*=x;while(x>0)&&(y>5);cout<<"y="<<y<<"x="<<x; 輸出:y=1 x=0 8編寫程序(1)將用戶輸入的24小時制時間轉化為12小時制#include<iostream.h>int main()int a,b,c;cout<<”請輸入24小時制下的時間:_:_:_:”<<endl;cin>>a>>b>>c;if(a>

溫馨提示

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

評論

0/150

提交評論