第2章C++测试答案.docx
- 文档编号:3203623
- 上传时间:2023-05-05
- 格式:DOCX
- 页数:36
- 大小:26.80KB
第2章C++测试答案.docx
《第2章C++测试答案.docx》由会员分享,可在线阅读,更多相关《第2章C++测试答案.docx(36页珍藏版)》请在冰点文库上搜索。
第2章C++测试答案
第2章测试习题
1.单项选择题
(1)putchar函数可以向终端输出一个(D)。
A.整型变量表达式值B.实型变量值
C.字符串D.字符或字符型变量值
(2)intk=10;
while(k=0)k=k-1;
则下面描述正确的是(C)。
A.while循环执行10次B.循环是无限循环
C.循环体语句一次也不执行D.循环体语句执行一次
(3)intx=0,s=0;
while(!
x!
=0)s+=++x;
cout<
则(B)。
A.运行程序段后输出0B.运行程序段后输出1
C.程序段中的控制表达式是非法的D.程序段执行无限次
(4)intx=0,y=0;
while(x<15)y++,x+=++y;
cout< 则运行结果为(D)。 A.20,7B.6,12C.20,8D.8,2 (5)inta=1,b=2,c=2; while(a cout< 运行结果为(A)。 A.1,2,0B.2,1,0C.1,2,1D.2,1,1 (6)intx=-1; do {x=x*x;} while(! x); 下列说法正确的是(C)。 A.是死循环B.循环执行两次 C.循环执行一次D.有语法错误 (7)以下能正确计算1*2*3*…*10的程序段是(C)。 A.do{i=1;s=1;B.do{i=1;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;do{s=s*i; i++;}i++;} while(i<=10);while(i<=10); (8)以下描述正确的是(C)。 A.由于do-while循环中循环体语句只是一条可执行语句,所以循环体内不能使用复合语句 B.do-while循环由do开始,用while结束,在while(表达式)后面不能写分号 C.在do-while循环体中,一定要有能使while后面表达式的值变为零(“假”)的操作 D.do-while循环中,根据情况可以省略while (9)C++语言中while和do-while循环的主要区别是(A)。 A.do-while的循环体至少无条件执行一次 B.while的循环控制条件比do-while的循环控制条件严格 C.do-while允许从外部转到循环体内 D.do-while的循环体不能是复合语句 (10)下面有关for循环的正确描述是(D)。 A.for循环只能用于循环次数已经确定的情况 B.for循环是先执行循环体语句,后判断表达式 C.在for循环中,不能用break语句跳出循环体 D.for循环的循环体语句中,可以包含多条语句,但必须用大括号括起来 (11)对for(表达式1;;表达式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;y<10;)y=((x=3*y,x+1),x-1); cout<<“x=”< A.x=27,y=27B.x=12,y=13 C.x=15,y=14D.x=y=27 (14)以下不是无限循环的语句为(D)。 A.for(y=0,x=1;x>++y;x=I++)I=x;B.for(;;x++=I); C.while (1){x++;}D.for(I=10;;I--)sum+=I; (15)下面程序的运行结果是(D)。 #include viodmain() {inti,b,k=0; for(i=1;i<=5;i++) {b=i%2; while(b-->=0)k++;} cout< A.3,-1B.8,-1C.3,0D.8,-2 (16)以下正确的描述是(B)。 A.continue语句的作用是结束整个循环的执行 B.只能在循环体内和switch语句体内使用break语句 C.在循坏体内使用break语句或continue语句的作用相同 D.从多层循环嵌套中退出,只能使用goto语句 (17)下面程序段(D)。 for(t=1;t<=100;t++) {cin>>x; if(x<0)continue; cout< A.当x<0时整个循环结束B.x>=0时什么也不输出 C.cout永远也不执行D.最多允许输出100个非负整数 (18)下面程序段(B)。 x=3; do{y=x--; if(! y){cout<<”x”;continue;} cout<<”#”;}while(1<=x<=2); A.将输出##B.将输出##* C.是死循环D.含有不合法的控制表达式 (19)下面程序的运行结果是(B)。 #include voidmain() {inta,b; for(a=1,b=1;a<=100;a++) {if(b>=20)break; if(b%3==1){b+=3;continue;} b-=5; } cout< } A.7B.8C.9D.10 (20)下面程序段的运行结果是(B)。 #include voidmain() {inti,j,x=0; for(i=0;i<2;i++) {x++; for(j=0;j<=3;j++) {if(j%2)continue; x++; } x++; } cout<<“x=”< } A.x=4B.x=8C.x=6D.x=12 (21)下面程序段的运行结果是(A)。 #include voidmain() {inti; for(i=1;i<=5;i++) {if(I%2)cout<<“*”; elsecontinue; cout<<“#”;} cout<<“$\n”;} A.*#*#*#$B.#*#*#*$C.*#*#$D.#*#*$ (22)下面程序段的运行结果是(A)。 #include voidmain() {inti,j,a=0; for(i=0;i<2;i++) {for(j=0;j<4;j++) {if(j%2)break; a++; } a++; } cout< } A.4B.5C.6D.7 2.填空题: (1)下面程序段是从键盘输入的字符中统计数字字符的个数,用换行符结束循环, 请填空。 intn=0,c; c=cin.get(); while(c! =’\n’) {if(c>=’0’&&c<=’9’)n++; c=cin.get(); } (2)1020个西瓜,第一天卖一半多两个,以后每天卖剩下的一半多两个,问几天以后能卖完? #include main() {intday,x1,x2; day=0;x1=1020; while(x1>0){x2=(x1/2-2);x1=x2;day++;cout< cout<<“day=”< (5)运行下面程序段后,k值为(36)。 k=1;n=263; do{k*=n%10;n/=10;}while(n); (6)下面程序段中循环体的执行次数是(3)。 a=10;b=0; do{b+=2;a-=2+b;}while(a>=0); (7)下面程序段的运行结果为(**)。 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=”< (9)下面程序段的运行结果是()。 for(a=1,i=-1;-1<=i<1;i++) {a++;cout< 分析: 本题循环条件是假值,所以什么也不输出。 (10)鸡、兔共有30只,脚共有90个,下面程序段是计算鸡兔各有多少只,x代表有多少只鸡,y代表有多少只兔子,请填空。 for(x=1;x<=29;x++) {y=30-x; if(2*x+4*y==90)cout (11)下面程序的功能是从3个红球、5个白球、6个黑球中任意取出8个球,且其中必须有白球,输出所有可能的方案,请填空。 #include voidmain() { inti,j,k; cout<<“\nhongbaihei\n”; for(i=0;i<=3;i++) for((j=1);j<=5;j++) {k=8-i-j; if(k>0&&k<=6) cout< }} (12)下面程序的功能是求出用数字0至9可以组成多少个没有重复的三位偶数,请填空。 #include voidmain() {intn=0,i,j,k; for(i=1;i<=9;i++) for(k=0;k<=8;(k+=2)) if(k! =i) for(j=0;j<=9;j++) if(j! =i&&j! =k)n++; cout<<“n=”< } 3.看程序,写结果 (1)#include voidmain() {inti=0,x=0,y=0; do{++i; if(i%2! =0){x=x+i;i++;} y=y+i++; }while(i<=7); cout<<“x=”< 运行结果: x=1,y=20 (2)#include voidmain() {inti,t,sum=0; for(t=i=1;i<=10;) {sum+=t;++i; if(i%3==0)t=-i; elset=i;} cout<<“sum=”< 运行结果: sum=19 (3)nclude voidmain() {inti; for(i=1;i<=5;i++) switch(i%2) {case0: i++;cout<<“#”;break; case1: i+=2;cout<<“*”; default: cout<<“\n”;}} 运行果为: * # (4)#include voidmain() {inty=2,a=1; while(y--! =-1) {do{a*=y;a++;}while(y--);} cout< 运行结果: 1-2 (5)#include voidmain() {inti,j; for(i=4;i>=1;i--) {for(j=1;j<=i;j++)putchar(‘#’); for(j=1;j<=4-i;j++)putchar(‘*’); putchar(‘\n’);}} 运行结果: #### ###* ##** #*** (6)#include voidmain() {inti,k=0; for(i=1;;i++) {k++; if(k%3==0)break; } cout< } 运行结果: 33 (7)#include voidmain() {inti=1; while(i<=15) if(++i%3! =2)continue; elsecout< cout<<“\n”; } 运行结果: 2581114 (8)#include voidmain() {inta=10,y=0; do{a+=2;y+=a; if(y>50)break;}while(a=14); cout<<“a=”< } 运行结果: a=16y=60 (9)#include voidmain() {inti,k=19; while(i=k-1) {k-=3; if(k%5==0){i++;continue;} elseif(k<5)break; i++;} cout<<“i=”< } 运行结果: i=6k=4 (10)#include voidmain() {inti=5; do{switch(i%2) {case4: i--;break; case6: i--;continue; } i--;i--; cout<0); } 运行结果: 31-1 4.按下列要求编写程序 (1)有一个函数如下: x(x<5) y=x+6(5<=x<15) x-6(x>=15) 输入x的值,计算出相应的y值。 程序为: #include voidmain() { intx,y; cin>>x; if(x<5)y=5; if(x>=5&&x<15)y=x+6; if(x>=15)y=x-6; cout< } (2)编程要求输入整数a和b,若a2+b2大于100,则输出a2+b2百位以上的数字,否则输出两数之和。 程序为: #include intmain() { inta,b,n; cin>>a>>b; cout<<"a="< if(a*a+b*b>100)n=(a*a+b*b)/100; elsen=a+b; cout< return0; } (3)根据π/4=1-1/3+1/5-1/7+…求π的近似值,直到最后一项的值小于0.000001为止。 程序为: #include #include intmain() { doublei,p,pai; i=1; pai=0; do{ p=pow(-i,i-1)*1.0/(2*i-1); pai=pai+4*p; }while(p>=0.000001); cout<<"pai="< return0; } (4)编程输出如下图形: (例n=6) * ***** ********* ************* ***************** ********************* 程序为: 方法1: #include voidmain() {inti,j,k; for(i=1;i<=6;i++) {for(k=1;k<=20-2*i;k++) cout<<''; for(j=1;j<=4*i-3;j++) cout<<'*'; cout< } } 方法2: #include intmain() { inti,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< } } return0; } (5)求1! +2! +3! +…8! 。 程序为: #include } (6)打印出所有的“水仙花数“(它是一个三位数,其各位数字立方和等于该数本身)。 程序为: #include "< (7)编写一个程序,输入年、月,打印出该年份该月的天数。 程序为: #include voidmain() {intyear,month,days; cin>>year>>month; switch(month) {case1: case3: case5: case7: case8: case10: case12: days=31;break; case4: case6: case9: case11: days=30;break; case2: if(year%400==0||year%4==0&&year%100! =0)days=29; elsedays=28; } cout< } (8)输入一个自然数,输出其各因子的连乘形式,如输入12,则输出12=1*2*2*3。 程序为: 方法1: #include voidmain() { inti,n; cin>>n; cout<<"n="<<"1"; for(i=2;i<=n;) { if(n%i==0) {n=n/i; cout<<"*"< } i++; } cout< } 方法2: #include voidmain() {intn,i; cin>>n; cout< i=2; while(n>1) {while(n%i==0) {cout<<"*"< i++; } } (9)求一个整数任意次方的最后三位数。 程序为: #include
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 测试 答案