1、二级 C 语言程序设计-2 及答案解析(总分:100.00,做题时间:90 分钟)一、B选择题/B(总题数:20,分数:40.00)1.下列运算符中优先级最高的算符是 A.! B.% C.-= D.if(ab)if(b0) c=0;else c+=1;printf(“%d/n“, c);程序的输出结果是 A.0 B.1 C.2 D.3(分数:2.00)A.B.C.D.6.有以下程序:#includestdio.hmain()int w=4, x=3, y=2, z=1;printf(“%d/n“, (wX? w:zy? z:x);程序的输出结果是 A.1 B.2 C.3 D.4(分数:2.00
2、)A.B.C.D.7.有以下程序:#includestdio.hmain()int a, b, s;scanf(“%d%d“, s=a;if(ab) s=b;s*=s;printf(“%d/n“, s);若执行以上程序时从键盘上输入 3 和 4,则输出结果是 A.14 B.16 C.18 D.20(分数:2.00)A.B.C.D.8.有以下程序片段: y=-1; if(x!=0) if(x0) y=1; else y=0; 其能正确表示的数学函数关系是 AB C D (分数:2.00)A.B.C.D.9.有以下程序:#includestdio.hmain()int k=-3;if(k=0) p
3、rintf(“*/n“)else printf(“程序的输出结果是 A.输出# B.输出 break; case 0:case 5:y=a-b; B.switch(a*a+b*b); case 3; case 1:y=a+b; break; case 0:y=b-a; break; C.switch a default:x=a+b; case 10:y=a-b;break; case 11:x=a*d; break; D.switch(a+b) case10:x=a+b; break; case11:y=a-b; break; (分数:2.00)A.B.C.D.11.有以下程序段:int k,
4、 j, s;for(k=2; k6; k+,k+)s=1;for(j=k; j6; j+) s+=j;printf(“%d/n“, s);程序段的输出结果是 A. 9 B.1 C.11 D.10(分数:2.00)A.B.C.D.12.有以下程序段:int i, j, m=0;for(i=1; i=15; i+=4)for(j=3; j=19; j+=4) m+;printf(“%d/n“, m);程序段的输出结果是 A.12 B.15 C.20 D.25(分数:2.00)A.B.C.D.13.有以下程序段:int n=10;while(n7)n-;printf(“%d/n“, n);程序段的输
5、出结果是 A.10 9 8 B.9 8 7 C.10 9 8 7 D.9 8 7 6(分数:2.00)A.B.C.D.14.有以下程序段:int x=3;doprintf(“%3d“, x-=2);while(!(-x);程序段的输出结果是 A.1 B.3 0 C.1 -2 D.死循环(分数:2.00)A.B.C.D.15.有以下程序:#includestdio.hmain()int i, sum;for(i=1; i6; i+) sum+=sum;printf(“%d/n“, sum);程序的输出结果是 A.15 B.14 C.不确定 D.0(分数:2.00)A.B.C.D.16.有以下程序
6、:#includestdio.hmain()int y=10;for(; y0; y-)if(y%3=0)printf(“%d“, -y); continue;程序的输出结果是 A.741 B.852 C.963 D.875421(分数:2.00)A.B.C.D.17.有以下程序段:int x;for(x=3; x6; x+)printf(x%2)?(“*%d“): (“#%d/n“), x);程序段的输出结果是 A.*3 #4 *5 B.#3 *4 #5 C.#3 *4#5 . D.*3#4 *5(分数:2.00)A.B.C.D.18.有以下程序:#includestdio.hmain()i
7、nt i;for(i=1; i=5; i+)if(i%2) printf(“*“); else continue;printf(“#“);printf(“$/n“);程序的输出结果是 A.*#*#*#$ B.#*#*#*$ C.*#*#$ D.#*#*$(分数:2.00)A.B.C.D.19.以下叙述中正确的是 A.do-while 语句构成的循环不能用其他语句构成的循环来代替 B.do-while 语句构成的循环只能用 break 语句退出 C.用 do-while 语句构成循环时,只有在 while 后的表达式为非零时结束循环 D.用 do-while 语句构成循环时,只有在 while
8、后的表达式为零时结束循环(分数:2.00)A.B.C.D.20.有以下程序:#includestdio.hmain()int x, i; for(i=1; i=100; i+)x=i;if(+x%2=0)if(+x%3=0)if(+x%7=0)printf(“%d“, x);printf(“/n“);程序的输出结果是 A.28 70 B.42 84 C.26 68 D.39 81(分数:2.00)A.B.C.D.二、B填空题/B(总题数:16,分数:32.00)21.C 语言中用_表示逻辑值“真”,用_表示逻辑值“假”。(分数:2.00)填空项 1:_22.C 语言中的关系运算符“!=”的优先
9、级比“=” 1。(分数:2.00)填空项 1:_23.C 语言中的逻辑运算符“ if(a100) printf (“%d/n“, a100); else printf(“%d/n“, a=100); (分数:2.00)填空项 1:_28.请写出与以下表达式等价的表达式:A_B_。 A!(x0) B!0(分数:2.00)填空项 1:_29.当 a=1,b=2,c=3 时,以下 if 语句执行后,a、b、c 中的值分别为_、_、_。 if(ac) b=a; a=c; c=b;(分数:2.00)填空项 1:_30.若变量已正确定义,以下语句段的输出结果是_。 x=0; y=2; z=3; switc
10、h(x) case 0: switch(y=2) case 1: printf(“*“); break; case 2: printf(“%“); break; case 1: switch(z) case 1: printf(“*“); case 2: printf(“*“); break; default: printf(“#“);(分数:2.00)填空项 1:_31.当执行以下程序段后,i 的值是_、j 的值是_、k 的值是_。 int a, b, c, d, i, j, k; a=10; b=c=d=5; i=j=k=0; for(; ab; +b) i+; while(a+c) j+
11、; do k+; while(ad+);(分数:2.00)填空项 1:_32.以下程序段的输出结果是_。 int k, n, m; n=10; m=1; k=1; while(k+=n) m*=2; printf(“%d/n“, m);(分数:2.00)填空项 1:_33.以下程序的输出结果是_。 #includestdio.h main() int x=2; while(x-); printf(“%d/n“, x); (分数:2.00)填空项 1:_34.以下程序段的输出结果是_。 int i=0, sum=1; do sum+=i+; while(i5); printf(“%d/n“, s
12、um);(分数:2.00)填空项 1:_35.有以下程序段: s=1.0; for(k=1; k=n; k+) s=s+1.0/(k*(k+1); printf(“%f/n“, s); 请填空,使下面的程序段的功能完全与之等同。 s=0.0; _; k=0; do s=s+d; _; d=1.0/(k*(k+1); while(_); printf(“%f/n“, s);(分数:2.00)填空项 1:_36.以下程序的功能是:从键盘上输入若干学生的成绩,统计并输出最高成绩和最低成绩,当输入负数时结束输入。请填空。 #includestdio.h main() float x, amax, am
13、in; scanf(“%f“, amax=x; amin=x; while(_) if(xamax) amax=x; if(_) amin=x; scanf(“%f“, printf(“/namax=%f/namin=%f/n“, amax, amin); (分数:2.00)填空项 1:_三、B编程题/B(总题数:3,分数:28.00)37.若 a 的值小于 100,请将以下选择结构改写成由 switch 语句构成的选择结构。 if(a30) m=1; else if(a40) m=2; else if(a50) m=3; else if(a60) m=4; else m=5;(分数:9.00
14、)_38.编写程序,输入一位学生的生日(年:y0、月:m0、日:d0),并输入当前的日期(年:y1、月:m1、日:d1),输出该生的实际年龄。(分数:10.00)_39.编写程序,输入一个整数,打印出它是奇数还是偶数。(分数:9.00)_二级 C 语言程序设计-2 答案解析(总分:100.00,做题时间:90 分钟)一、B选择题/B(总题数:20,分数:40.00)1.下列运算符中优先级最高的算符是 A.! B.% C.-= D.if(ab)if(b0) c=0;else c+=1;printf(“%d/n“, c);程序的输出结果是 A.0 B.1 C.2 D.3(分数:2.00)A.B.C
15、. D.解析:6.有以下程序:#includestdio.hmain()int w=4, x=3, y=2, z=1;printf(“%d/n“, (wX? w:zy? z:x);程序的输出结果是 A.1 B.2 C.3 D.4(分数:2.00)A. B.C.D.解析:7.有以下程序:#includestdio.hmain()int a, b, s;scanf(“%d%d“, s=a;if(ab) s=b;s*=s;printf(“%d/n“, s);若执行以上程序时从键盘上输入 3 和 4,则输出结果是 A.14 B.16 C.18 D.20(分数:2.00)A.B. C.D.解析:8.有以
16、下程序片段: y=-1; if(x!=0) if(x0) y=1; else y=0; 其能正确表示的数学函数关系是 AB C D (分数:2.00)A.B.C. D.解析:9.有以下程序:#includestdio.hmain()int k=-3;if(k=0) printf(“*/n“)else printf(“程序的输出结果是 A.输出# B.输出 break; case 0:case 5:y=a-b; B.switch(a*a+b*b); case 3; case 1:y=a+b; break; case 0:y=b-a; break; C.switch a default:x=a+b
17、; case 10:y=a-b;break; case 11:x=a*d; break; D.switch(a+b) case10:x=a+b; break; case11:y=a-b; break; (分数:2.00)A. B.C.D.解析:11.有以下程序段:int k, j, s;for(k=2; k6; k+,k+)s=1;for(j=k; j6; j+) s+=j;printf(“%d/n“, s);程序段的输出结果是 A. 9 B.1 C.11 D.10(分数:2.00)A.B.C.D. 解析:12.有以下程序段:int i, j, m=0;for(i=1; i=15; i+=4)
18、for(j=3; j=19; j+=4) m+;printf(“%d/n“, m);程序段的输出结果是 A.12 B.15 C.20 D.25(分数:2.00)A.B.C. D.解析:13.有以下程序段:int n=10;while(n7)n-;printf(“%d/n“, n);程序段的输出结果是 A.10 9 8 B.9 8 7 C.10 9 8 7 D.9 8 7 6(分数:2.00)A.B. C.D.解析:14.有以下程序段:int x=3;doprintf(“%3d“, x-=2);while(!(-x);程序段的输出结果是 A.1 B.3 0 C.1 -2 D.死循环(分数:2.0
19、0)A.B.C. D.解析:15.有以下程序:#includestdio.hmain()int i, sum;for(i=1; i6; i+) sum+=sum;printf(“%d/n“, sum);程序的输出结果是 A.15 B.14 C.不确定 D.0(分数:2.00)A.B.C. D.解析:16.有以下程序:#includestdio.hmain()int y=10;for(; y0; y-)if(y%3=0)printf(“%d“, -y); continue;程序的输出结果是 A.741 B.852 C.963 D.875421(分数:2.00)A.B. C.D.解析:17.有以下
20、程序段:int x;for(x=3; x6; x+)printf(x%2)?(“*%d“): (“#%d/n“), x);程序段的输出结果是 A.*3 #4 *5 B.#3 *4 #5 C.#3 *4#5 . D.*3#4 *5(分数:2.00)A.B.C.D. 解析:18.有以下程序:#includestdio.hmain()int i;for(i=1; i=5; i+)if(i%2) printf(“*“); else continue;printf(“#“);printf(“$/n“);程序的输出结果是 A.*#*#*#$ B.#*#*#*$ C.*#*#$ D.#*#*$(分数:2.0
21、0)A. B.C.D.解析:19.以下叙述中正确的是 A.do-while 语句构成的循环不能用其他语句构成的循环来代替 B.do-while 语句构成的循环只能用 break 语句退出 C.用 do-while 语句构成循环时,只有在 while 后的表达式为非零时结束循环 D.用 do-while 语句构成循环时,只有在 while 后的表达式为零时结束循环(分数:2.00)A.B.C.D. 解析:20.有以下程序:#includestdio.hmain()int x, i; for(i=1; i=100; i+)x=i;if(+x%2=0)if(+x%3=0)if(+x%7=0)prin
22、tf(“%d“, x);printf(“/n“);程序的输出结果是 A.28 70 B.42 84 C.26 68 D.39 81(分数:2.00)A. B.C.D.解析:二、B填空题/B(总题数:16,分数:32.00)21.C 语言中用_表示逻辑值“真”,用_表示逻辑值“假”。(分数:2.00)填空项 1:_ (正确答案:非 0 0)解析:22.C 语言中的关系运算符“!=”的优先级比“=” 1。(分数:2.00)填空项 1:_ (正确答案:低)解析:23.C 语言中的逻辑运算符“ if(a100) printf (“%d/n“, a100); else printf(“%d/n“, a=
23、100); (分数:2.00)填空项 1:_ (正确答案:1)解析:28.请写出与以下表达式等价的表达式:A_B_。 A!(x0) B!0(分数:2.00)填空项 1:_ (正确答案:x=0 1)解析:29.当 a=1,b=2,c=3 时,以下 if 语句执行后,a、b、c 中的值分别为_、_、_。 if(ac) b=a; a=c; c=b;(分数:2.00)填空项 1:_ (正确答案:3 2 2)解析:30.若变量已正确定义,以下语句段的输出结果是_。 x=0; y=2; z=3; switch(x) case 0: switch(y=2) case 1: printf(“*“); brea
24、k; case 2: printf(“%“); break; case 1: switch(z) case 1: printf(“*“); case 2: printf(“*“); break; default: printf(“#“);(分数:2.00)填空项 1:_ (正确答案:*#)解析:31.当执行以下程序段后,i 的值是_、j 的值是_、k 的值是_。 int a, b, c, d, i, j, k; a=10; b=c=d=5; i=j=k=0; for(; ab; +b) i+; while(a+c) j+; do k+; while(ad+);(分数:2.00)填空项 1:_
25、(正确答案:5 4 6)解析:32.以下程序段的输出结果是_。 int k, n, m; n=10; m=1; k=1; while(k+=n) m*=2; printf(“%d/n“, m);(分数:2.00)填空项 1:_ (正确答案:1024)解析:33.以下程序的输出结果是_。 #includestdio.h main() int x=2; while(x-); printf(“%d/n“, x); (分数:2.00)填空项 1:_ (正确答案:-1)解析:34.以下程序段的输出结果是_。 int i=0, sum=1; do sum+=i+; while(i5); printf(“%
26、d/n“, sum);(分数:2.00)填空项 1:_ (正确答案:11)解析:35.有以下程序段: s=1.0; for(k=1; k=n; k+) s=s+1.0/(k*(k+1); printf(“%f/n“, s); 请填空,使下面的程序段的功能完全与之等同。 s=0.0; _; k=0; do s=s+d; _; d=1.0/(k*(k+1); while(_); printf(“%f/n“, s);(分数:2.00)填空项 1:_ (正确答案:d=1.0 k+ k=n)解析:36.以下程序的功能是:从键盘上输入若干学生的成绩,统计并输出最高成绩和最低成绩,当输入负数时结束输入。请填
27、空。 #includestdio.h main() float x, amax, amin; scanf(“%f“, amax=x; amin=x; while(_) if(xamax) amax=x; if(_) amin=x; scanf(“%f“, printf(“/namax=%f/namin=%f/n“, amax, amin); (分数:2.00)填空项 1:_ (正确答案:x=0 xamin)解析:三、B编程题/B(总题数:3,分数:28.00)37.若 a 的值小于 100,请将以下选择结构改写成由 switch 语句构成的选择结构。 if(a30) m=1; else if(
28、a40) m=2; else if(a50) m=3; else if(a60) m=4; else m=5;(分数:9.00)_正确答案:(若 a 的值小于 100,switch 后一对括号内的表达式可写成:a/10。)解析:38.编写程序,输入一位学生的生日(年:y0、月:m0、日:d0),并输入当前的日期(年:y1、月:m1、日:d1),输出该生的实际年龄。(分数:10.00)_正确答案:(根据当前日期计算年龄的语句可写成: age=y1-y0; if(m1m0m1=m0)解析:39.编写程序,输入一个整数,打印出它是奇数还是偶数。(分数:9.00)_正确答案:(判断语句可写成: if(n%2=0) printf(“%d is even number/n“, n); /*余数为 0 时为偶数*/ else printf(“%d is odd number/n“, n);)解析:
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1