第2章C++测试答案_第1页
第2章C++测试答案_第2页
第2章C++测试答案_第3页
第2章C++测试答案_第4页
第2章C++测试答案_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第 2 章 测试习题1单项选择题(1) putchar 函数可以向终端输出一个(D )。A 整型变量表达式值C.字符串2) int k=10;B .实型变量值D 字符或字符型变量值while(k=0) k=k-1; 则下面描述正确的是( C A while 循环执行 10 次C 循环体语句一次也不执行3) int x=0,s=0; while(!x!=0) s+=+x; couts; 则( B)。A 运行程序段后输出 0C.程序段中的控制表达式是非法的4) int x=0,y=0; while(x15) y+,x+=+y; couty ” , ” x; 则运行结果为( D )。A. 20, 7

2、 B. 6, 125) int a=1,b=2,c=2; while(abc) t=a;a=b;b=t;c-; couta ” , ” b 运行结果为( A )。)。B 循环是无限循环D.循环体语句执行一次B 运行程序段后输出 1D 程序段执行无限次C 20, 8D 8, 2A. 1,2,0B.2,1,0C. 1,2,1D.2,1,1( 6) int x=-1;dox=x*x;while(!x);下列说法正确的是(C )。A .是死循环B.循环执行两次C.循环执行一次D.有语法错误( 7)以下能正确计算1*2*3* *10 的程序段是(C )c;A.do i=1;s=1;B . do i=1;

3、s=0;s=s*i; i+;s=s*i;i+;while(i=10);while(i=10);C .i=1;s=1;D . i=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循环体中,一定要有能使while后面表达式的值变为零(假”)的操作Ddo-while 循环中,根据情况可以省略 while

4、(9)C+语言中while和do-while循环的主要区别是(A)。A . do-while 的循环体至少无条件执行一次B. while 的循环控制条件比 do-while 的循环控制条件严格 C . do-while 允许从外部转到循环体内D. do-while 的循环体不能是复合语句10 )下面有关 for 循环的正确描述是( D )。Afor 循环只能用于循环次数已经确定的情况B for 循环是先执行循环体语句,后判断表达式C 在 for 循环中,不能用 break 语句跳出循环体D for 循环的循环体语句中,可以包含多条语句,但必须用大括号括起来 11)对 for( 表达式 1; ;

5、表达式 3) 可理解为( B )。A for( 表达式 1;0;表达式 3)B for( 表达式 1;1;表达式 3)C. for(表达式1;表达式1;表达式3) D. for(表达式1;表达式3;表达式3) 12)for(i=2;i= =0;) printf( “%d”-),;I 循环执行的次数是( B )。A 无限次B 0 次C 1 次D 2 次13 )下面程序段的运行结果为( C )。for(y=1;y10;) y=(x=3*y,x+1),x-1);cout “ x= ” x ” y=” +y;x=I+) I=x;Cwhile(1)x+;B for( ; ;x+=I);Dfor(I=10

6、; ;I-) sum+=I;15 )下面程序的运行结果是( D )。#includeviod main( )int i,b,k=0;for(i=1;i=0) k+;coutk ”, ” b;A 3,-1B 8,-1C 3,0D 8,-216 )以下正确的描述是(B)。A continue 语句的作用是结束整个循环的执行B 只能在循环体内和 switch 语句体内使用 break 语句C 在循坏体内使用 break 语句或 continue 语句的作用相同D 从多层循环嵌套中退出,只能使用 goto 语句17 )下面程序段( D )。for(t=1;tx;if(x0) continue;cout

7、t;A 当 x=0 时什么也不输出C cout 永远也不执行D 最多允许输出 100 个非负整数18 )下面程序段( B )。x=3;do y=x-;if(!y) cout ” x”; continue; cout ” #” ;w hile(1 =x=2) ;A 将输出 #B 将输出 #*C.是死循环D .含有不合法的控制表达式19 )下面程序的运行结果是( B )。#includevoid main()int a,b;for(a=1,b=1;a=20) break;if(b%3= =1) b+=3;continue;b-=5;coutaendl;A7 B8C9D 1020 )下面程序段的运行

8、结果是( B )。#includevoid main( ) int i,j,x=0;for(i=0;i2;i+) x+;for(j=0;j=3;j+) if(j%2) continue;x+;x+;cout “ x=” xendl;Ax=4B x=8Cx=621 )下面程序段的运行结果是( A )。Dx=12#includevoid main()int i;for(i=1;i=5;i+)if(I%2) cout “ * ”;else continue;cout “ #” ; cout “$n” ; A *#*#*#$B #*#*#*$C *#*#$D#*#*$22 )下面程序段的运行结果是(

9、A )。#includevoid main( ) int i,j,a=0;for(i=0;i2;i+) for(j=0;j4;j+) if(j%2) break;a+;a+;couta= 0&c=)9n+; c=cin.get() ;(2) 1020 个西瓜,第一天卖一半多两个,以后每天卖剩下的一半多两个,问几天以后能卖 完?#includemain( )int day, x1, x2; day=0;x1=1020; while( x10 ) x2= ( x1/2-2 );x1=x2;day+;coutx1endl; cout “ day= ” day=0);(7) 下面程序段的运行结果为(

10、* )。x=2;do cout “ * ”-;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) 下面程序段的运行结果是()。for(a=1,i=-1;-1=i1;i+) a+;coutxyendl; 分析:本题循环条件是假值,所以什么也不输出。(10) 鸡、兔共有 30 只,脚共有 90 个,下面程序段是计算鸡兔各有多少只, x 代表有多少 只鸡, y 代表有多少只兔子,请填空。for(x=1;x=29;x+)y=30-x;if( 2*x+4*

11、y= =90 ) coutx y;(11) 下面程序的功能是从 3 个红球、 5 个白球、 6 个黑球中任意取出 8 个球,且其中必须 有白球,输出所有可能的方案,请填空。#includevoid main()int i,j,k;cout “n”;for(i=0;i=3;i+) for( j=1 );j0 & k=6 ) couti j kendl;(12) 下面程序的功能是求出用数字 0至 9可以组成多少个没有重复的三位偶数,请填空。#includevoid main() int n=0,i,j,k; for(i=1;i=9;i+)for(k=0;k=8;( k+=2 )i f(k!=i)

12、for(j=0;j=9;j+) if( j!=i & j!=k) n+;cout “ n= ”enndl;3看程序,写结果( 1) #includevoid 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= ” x ” y=” y; 运行结果: x=1,y=202) #includevoid 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; 运行结果: su

13、m=19(3) ncludevoid main( )int i;for(i=1;i=5;i+)switch(i%2)case 0:i+; cout“ #” ;break;case 1:i+=2; cout“ * ” ;default: cout n”“; 运行果为: *#(4) #includevoid main()int y=2,a=1;while(y-!=-1)do a*=y;a+; while(y-);coutay; 运行结果 : 1 -2(5) #includevoid main()int i,j;for(i=4;i=1;i-)for(j=1;j=i;j+) putchar( # );

14、for(j=1;j=4- i;j+) putchar( * );putchar( n ); 运行结果: #*#*#*(6) #includevoid main()int i,k=0;for(i=1; ;i+)k+;if(k%3= =0) break;coutik;运行结果:3 3(7) #in cludevoid mai n()int i=1;while(i=15) if(+i%3!=2) continue; else couti t cout n ” ;运行结果:2 5 8 11 14(8) #in cludevoid mai n()int a=10,y=0;do a+=2;y+=a; if

15、(y50) break; while(a=14); cout “ a= ” a ” y= ” y; 运行结果:a=16 y=60(9) #in cludevoid mai n()int i, k=19;while(i=k-1) k-=3;i f(k%5= =0) i+;co nti nue; else if(k5) break;i+;cout “ i= ” i ” k= ” k;一 运行结果:i=6 k=4(10) #in cludevoid mai n()int i=5;do switch(i%2)case 4:i-;break; case 6:i-;c on ti nue;i-;i-;co

16、ut0);运行结果:3 1-14 按下列要求编写程序(1) 有一个函数如下:.x(x5)y=!x+6(5=x=15)输入x的值,计算出相应的 y值。程序为:#in clude void main()int x,y;cinx;if(x=5&x=15) y=x-6; coutyendl;(2) 编程要求输入整数a和b,若a2+b2大于100,则输出a2+b2百位以上的数字,否则输 出两数之和。程序为: #includeint main()int a,b,n;cinab;couta=atb=b100) n=(a*a+b*b)/100;else n=a+b;coutnendl;return 0;(3)

17、 根据n /4 =1-1/3+1/5-1/7+求n的近似值,直到最后一项的值小于0.000001为止。 程序为: #include#includeint main()double i,p,pai;i=1;pai=0;dop=pow(-i,i-1)*1.0/(2*i-1);pai=pai+4*p;while(p=0.000001);coutpai=paiendl;return 0;(4) 编程输出如下图形:(例 n=6)*程序为:方法 1 :#includevoid main()int i,j,k;for(i=1;i=6;i+) for(k=1;k=20-2*i;k+)cout ;for(j=1

18、;j=4*i-3;j+)cout*;coutendl;方法 2:#include 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*;coutendl;return 0;(5) 求 1! +2 ! +3 ! +8 !。程序为: #include int main()int i;double m=1.0,s=0.0;for(i=1;i=8;i+)m=m*i;s=s+m;coutsendl;return 0;6)打印出所有的“水仙花数“ (它是一个三位数,其各位数字立方和

19、等于该数本身) 程序为: #include #include using namespace std;int main()int a,b,c,n,m;cout 所有的 水仙花数 :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)coutnendl;return 0;(7)编写一个程序,输入年、月,打印出该年份该月的天数。 程序为: #includevoid main()int year,month, days;cinyearmonth;swi

20、tch(month)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;coutyear 年 month 月有 days 天 n;(8)输入一个自然数,输出其各因子的连乘形式,如输入12,则输出 12=1*2*2*3 。程序为:方法 1:#includevoid main()int

21、i,n;cinn;coutn=1;for(i=2;i=n;)if(n%i=0)n=n/i;cout*i;continue;i+;coutendl;方法 2: #includevoid main()int n,i;cinn;coutn1)while(n%i=0) cout*i; n=n/i;i+;9)求一个整数任意次方的最后三位数。程序为:#include #include using namespace std; int main() int a,b,n; cout 输入 a,n:an; couta 的 n=100) coutbendl; if(b=10) cout0bendl; else i

22、f(b10) cout00bendl; return 0;法 2 :#include void main()int x,n,p=1,i; cinxn; for(i=1;i=n;i+) p=p*x%1000; coutpendl;(10)猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一 个。第二天早上又将剩下的桃子吃掉一半, 又多吃了一个。 以后每天早上都吃了前一天剩下 的一半零一个。到第 10 天早上想再吃时,发现只剩一个桃子了,求猴子第一天究竟摘了多 少个桃子?程序为: #includevoid main() int p=1,i; for(i=1;i=9;i+) p

23、=(p+1)*2; coutpendl;5选择题(1)以下程序的输出结果是(C )。#include void main () int a=100,x=10,y=20,ok1=5,ok2=0;if ( xy )if (y!=10 )if ( !ok1 ) a=1;else if (ok2) a=10; a=-1;couaendl;C-1D 值不确定)。Bif(x= =y ) x+=y; Dif(xy & x!=y );Cif (x!=y ) cinx else ciny ; 3)设有以下程序段,则(B )。int a=0, b=0;while (!a!=0 )b+=+a;coutb;A.程序运

24、行后输出C程序执行无数次4)当 a=1,if(ab)if(cd) else if(ac) if(bd) else x=3;else x=6;else x=7;A 15)以下 for 循环的循环次数是( for(x=0, y=0; (y=123)&A 是无限循环丨6)下面程序的运行结果是(#include void main () int x=6,y=8;if(x+6) cout+y6 )cout yendl;else couty+endl; A8B97)关于 for 循环语句下面不正确的是(A 在循环体中,不能改变循环控制变量B 在执行中循环控制变量初值、终值可变C.循环控制变量可增可减D 循

25、环控制变量不必在说明部分说明8)下列写法中等价的是(ABCDb=3 : c=5,)x=1;x=2;d=4 时,B2B.程序运行后输出1D 循环控制条件表达式是非法的执行下面一段程序后 x 的值是( BC3)。Cx4); x+);B 循环次数不定AC.执行4次)。D6D 执行3次)。D编译不成功若 若 若 若x=1,x=0,x=1, x=0,则则则则while while while whileB Dx!=x )与x!=x )与(x!=0 )与)。while while while(x=0) 与 while(9)执行语句for (i = 0; i+3;)后,变量A 2B 310)下面程序的运行结

26、果是( D#includevoid main()int x=10,y=10,i;for ( i=7; xi; y-=9, +i, x- coutx ”“ y ”“;)。x)x)!x)(!x)i 的值为(C 4)。DA(11)若int x = 3;且有下面的程序片段,则输出结果为( do x-=2;coutx;while (!(- -x);A1B3 010 1 9 2B9 8 7 6C10 9 9 0C1 -2D10 10 9 1 )。D 死循环12 )下面程序的运行结果是( C )。 #include void main () int num=0;while ( num=2 ) num+; c

27、outnum100 ) break;B for( ; ;)C int k=0;do+k;while ( k=0 );D int s=36;while ( s) ; -s;(15 )下面程序的运行结果是(A )。#include void main () int a, y;a=10; y=0;do a+=2; y+=a;if ( y50) break; while ( a=14) ;cout ” a=” a ” y=” y;Ca=14 y=50D a=14 y=60A a=16 y=60 B a=15 y=50 6填空题(1)下面程序的运行结果是 _-1 。#include void main

28、() int a=2,b=3,c;c=a;if( ab) c=1;else if ( a= =b) c=0; else c=-1;coutc;2)若所用变量都已正确定义,以下程序段的输出结果_y=7 x=21 x= y= 0;while(x20)y+ ; x+=3; cout ” y=” y”x=”x; 3)下面程序的运行结果是 _*# #includevoid main () int i, j=4;for( i=j; i=2*j; i+ )switch (i/j ) case 0:case 1: cout ” * ” ; break; default: cout ” #”;(4) 输入一个字

29、母,如果它是一个大写字母,则把它变成小写字母;如果它是一个小写字 母,则把它变成大写字母;其它字符不变。填入正确内容。#includevoid main () char ch;cinch;if(_ ch=65&ch= a &ch=)_z_ch=ch-32;coutch0&ab#includevoid main () int s,t,a,b;cinab;s=1;t=1;if ( a0) s=s+1;if ( ab) t=s+t;else if ( a= =b) t=5;else t=2*s;cout ”s=”s”x=”xendl;(6) 从键盘输入若干个学生的成绩,统计并输出最高成绩和最低成绩,

30、当输入负数时结束 输入,完成下面的程序填空。#includevoid main () float mark, max, min;_mark=cin.get()_ ;max=mark;min=mark;while ( _mark =0_ )if ( markmax )max=mark;if ( markmin )min=mark;_ mark=cin.get()cout ”max is: ”maxandl;cout ”min is: ” min;(7) 下面程序的功能是计算100 至 1000 之间有多少个数其各位数字之和是 5。 #includevoid main () int i, s, k

31、, cout=0;for ( i=100;i1000;i+ ) s=0; k=i;while ( _k!=0 ) s=s+k%10;k=_ _k/10;if( s!=5) _continue;else count+;coutcout;(8) 下面程序的功能是输出 1 至 200 之间每位数的乘积大于每位数的和的数。 #include void main () int n, k=1, s=0, m;for (n=1; ns) coutn;7 看程序写结果(1) #includevoid main() int x,y,z; x=1;y=2;z=3; x=y-=x|x+y!=z; coutxtyen

32、dl;输出: 1 1(2) #includevoid main() int x,y,z; if(y!=0) x=5; coutxendl; if(y=0) x=4; else x=5; coutxendl; x=1; if(y0)x=4; else x=5; coutxendl;输出: 555(3) #includevoid main() int a=2,b=7,c=5;switch(a0)case 1: switch(b0)case 1:cout; break;case 2:cout!; break;case 0: switch(c=5) case 0:cout*;break; case 1

33、:cout#; break; default:cout#; break;default: cout&endl;输出: #&(4)#includevoid main () int i=1,s=3;do s+=i+;if ( s%7= =0) continue;else +i; while ( s15 ) ;coutiendl;输出: 8(5)#includevoid main () int i;for ( i=4; i=10; i+ ) if (i%3= =0 )continue; couti ” “;输出: 4 5 7 8 10(6)#include void main () int i, x

34、;for( i=1; i100; i+ ) x=i;if ( +x%2= =0 ) if (+x%3= =0 ) if ( +x%7= =0 ) coutx ;输出: 28 70( 7) #includevoid main()int k,j,m;for(k=5;k=1;k-) m=0;for(j=k;j=5;j+) m=m+k*j;coutmendl;输出: 158)设输入为 4 时,程序的输出结果 #include void main()int i,j,n; long sum,term; cinn;for(sum=0,i=1;i=n;+i) term=1; j=1; do term *=i; while (+j=i); sum+=term; coutsumsum; 输出:sum288(9)#includevoid main() int a, s, n, count;a=2;s=0;n=1;count=1;while(count=7) n=n*a;s=s+n; +count; couts=s;输出:s=254(10)#includevoid main() int x, y;x=0; y=0;do y+; x*=x; while(x0)&(y5); couty=yx=x;输出:y=1 x=08编写程序(1)将用户输入的 24 小时制时间转化为 12 小时制 #includ

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论