1、(A)二级公共基础知识-6 及答案解析(总分:100.00,做题时间:90 分钟)一、单项选择题(总题数:59,分数:100.00)1.有以下程序:#includestdio.hmain()int a=1,b=0;if(!a)b+;else if(a=0) if(a)b+=2;else b+=3;pfintf(“%d/n“,b);程序运行后的输出结果是_。A0 B1 C2 D3(分数:2.00)A.B.C.D.2.若有定义语句 int a,b; double x;,则下列选项中没有错误的是_。Aswitch(x%2)case 0:a+;break;case 1:b+;break;default
2、:a+;b+;Bswitch(int)x/2.0)case 0:a+;break;case 1:b+;break;default:a+;b+;Cswitch(int)x%2)case 0:a+;break;case 1:b+;break;default:a+;b+;Dswitch(int)(x)%2)case 0.0:a+;break;case 1.0:b+;break;default:a+;b+;(分数:2.00)A.B.C.D.3.有以下程序:#includestdio.hmain()int a=1,b=2;while(a6)b+=a;a+=2;b%=10;printf(“%d,%d/n“
3、,a,b);程序运行后的输出结果是_。A5,11 B7,1 C7,11 D6,1(分数:2.00)A.B.C.D.4.有以下程序:#includestdio.hmain()inty=10;while(y-);pfintf(“y=%d/n“,y);程序执行后的输出结果是_。Ay=0 By=-1Cy=1 Dwhile 构成无限循环(分数:2.00)A.B.C.D.5.若有定义:double a=22;int i=0,k=18;,则不符合 C 语言规定的赋值语句是_。Aa=a+,i+; Bi=(a+k)=(i+k);Ci=a%11; Di=!a;(分数:2.00)A.B.C.D.6.若 a 是数值类
4、型,则逻辑表达式(a=1)(a!=1)的值是_。A1 B0C2 D不知道 a 的值,不能确定(分数:2.00)A.B.C.D.7.有如下嵌套的 if 语句:if(ab)if(ac)k=a;else k=c;elseif(bc)k=b;else k=c;以下选项中与上述 if 语句等价的语句是_。Ak=(ab)?a:b;k=(bc)?b:c; Bk=(ab)?(bc)?a:b):(bc)?b:c);Ck=(ab)?(ac)?a:c):(bc)?b:c); Dk=(ab)?a:b;k=(ac)?a:c;(分数:2.00)A.B.C.D.8.有以下程序:#includestdio.hmain()ch
5、ar a,b,c,d;scanf(“%c%c“,a,b);c=getchar();d=getchar();printf(“%c%c%c%c/n”,a,b,c,d);当执行程序时,按下列方式输入数据(从第 1 列开始,CR代表回车,注意:回车也是一个字符。12CR34CR则输出结果是_。A1234 B12C123D1234(分数:2.00)A.B.C.D.9.有以下程序:#includestdio.hmain()int i,j,m=1;for(i=1;i3;i+)for(j=3;j0;j-)if(i*j3)break;m*=i*j;printf(“m=%d/n“,m);程序运行后的输出结果是_。
6、Am=6 Bm=2 Cm=4 Dm=5(分数:2.00)A.B.C.D.10.有以下程序:#includestdio.hvoid main()int n=2,k=0;while(k+n+2);printf(“%d%d/n“,k,n);程序运行后的输出结果是_。A0 2 B1 3 C5 7 D1 2(分数:2.00)A.B.C.D.11.阅读以下程序:#includestdio.hmam()int case;float printF;printf(“请输入 2 个数:“);scanf(“%d%f“,case,printf);printf(“%d%f/n“,case,printtf);该程序在编译
7、时产生错误,其出错原因是_。A定义语句出错,case 是关键字,不能用作用户自定义标识符B定义语句出错,printf 不能作用户自定义标识符C定义语句无错,scanf 不能作为输入函数使用D定义语句无错,printf 不能输出 case 的值(分数:2.00)A.B.C.D.12.有以下程序:#includestdio.hvoid main()int a=1,b=0;pfintf(“%d,“,b=a+b);printf(“%d/n“,a=2%);程序运行后的输出结果是_。A0,0 B1,0 C3,2 D1,2(分数:2.00)A.B.C.D.13.设有定义:int a=1,b=2,c=3;,以
8、下语句中执行效果与其他 3 个不同的是_。Aif(ab)c=a,a=b,b=c; Bif(ab)c=a,a=b,b=c;Cif(ab)c=a;a=b;b=c; Dif(ab)c=a;a=b;b=c;(分数:2.00)A.B.C.D.14.有以下程序#includestdio.hvoid main()int c=0,k;for(k=1;k3;k+)switch(k)default:c+=k;case 2:c+;break;case 4:c+=2;break;printf(“%d/n“,c);程序运行后的输出结果是_。A3 B5 C7 D9(分数:2.00)A.B.C.D.15.有以下程序:#in
9、cludestdio.hvoid main()char c1,c2;c1=A+8-4;c2=A+8-5;printf(“%c,%d/n“,c1,c2);已知字母 A 的 ASC码为 65,程序运行后的输出结果是_。AE,68 BD,69 CE,D D输出无定值(分数:2.00)A.B.C.D.16.有以下程序:#includestdio.hvoid main()int a=2,3,5,4,i;for(i=0;i4;i+)switch(i%2)case 0:switch(ai%2)case 0:ai+;break;case 1:ai-;break;case 1:ai=0;for(i=0;i4;i
10、+)printf(“%d“,ai);pfintf(“/n“);程序运行后的输出结果是_。A3 3 4 4 B2 0 5 0 C3 0 4 0 D0 3 0 4(分数:2.00)A.B.C.D.17.以下是 if 语句的基本形式:if(表达式) 语句其中“表达式”_。A必须是逻辑表达式 B必须是关系表达式C必须是逻辑表达式或关系表达式 D可以是任意合法的表达式(分数:2.00)A.B.C.D.18.有以下程序:#includestdio.hmain()int x;scanf(“%d“,x);if(x=3);elseif(x!=10)printf(“%d/n“,x);程序运行时,输入的值为_才会有
11、输出结果。A不等于 10 的整数 B大于 3 且不等 10 的整数C大于 3 或等于 10 的整数 D小于 3 的整数(分数:2.00)A.B.C.D.19.有以下程序#includestdio.hmain()int a=1,b=2,c=3,d=0;if(a=1b+=2)if(b!=2c-!=3)printf(“%d,%d,%d/n“,a,b,c);else printf(“%d,%d,%d/n“,a,b,c);else printf(“%d,%d,%d/n“,a,b,c);程序运行后的输出结果是_。A1,2,3 B1,3,2 C1,3,3 D3,2,1(分数:2.00)A.B.C.D.20.
12、若函数中有定义语句:int k;,则_。A系统将自动给 k 赋初值 0 B这时 k 中的值无定义C系统将自动给 k 赋初值-1 D这时 k 中无任何值(分数:2.00)A.B.C.D.21.程序段:int x=12;double y=3.141593;printf(“%d%8.6f“,x,y);的输出结果是_。A123.141593 B12 3.141593 C12,3.141593 D123.1415930(分数:2.00)A.B.C.D.22.有以下程序:#includestdio.hmain()int a1,a2;char c1,c2;scanf(“%d%c%d%c“,a1,c1,a2,
13、c2);pfintf(“%d,%c,%d,%c“,a1,c1,a2,c2);若想通过键盘输入,使得 a1 的值为 12,a2 的值为 34,c1 的值为字符 a,c2 的值为字符 b,程序输出结果是:12,a,34,b 则正确的输入格式是_。(以下代表空格,CR代表回车)。A12a34bCR B12a34bCRC12,a,34,bCR D12a34bCR(分数:2.00)A.B.C.D.23.有以下程序:#includestdio.hmain()char *s=“ABC“;doprintf(“%d“,*s%10);s+;while(*s);注意:字母 A 的 ASC码值为 65。程序运行后的输
14、出结果是_。A5670 B656667 C567 DABC(分数:2.00)A.B.C.D.24.设变量已正确定义,以下不能统计出一行中输入字符个数(不包含回车符)的程序段是_。An=0;while(ch=getchar()!=/n)n+; Bn=0;while(getchar()!=/n)n+;Cfor(n=0;getchar()!=/n/;n+); Dn=0;for(ch=getchar();ch!=/n;n+);(分数:2.00)A.B.C.D.25.设有定义:char s80;int i=0;,以下不能将一行(不超过 80 个字符)带有空格的字符串正确读入的语句或语句组是_。Agets
15、(s);Bwhile(si+=getchar()!=/n);si=/0;Cscanf(“%s“,s);Ddoscanf(“%c“, while(si+!=/n);si=/0;(分数:2.00)A.B.C.D.26.若变量已正确定义为 int 型,要通过语句 scanf(“%d,%d,%d“,a,b,c);给 a 赋值 1、给 b 赋值2、给 c 赋值 3,以下输入形式中错误的是(代表一个空格符)_。A1,2,3回车 B123回车C1,2,3回车 D1,2,3回车(分数:2.00)A.B.C.D.27.有以下程序段:int a,b,c;a=10;b=50;c=30;if(ab)a=b,b=c;c
16、=a;printf(“a=%d b=%d c=%d/n“,a,b,c);程序的输出结果是_。Aa=10 b=50 c=10 Ba=10 b=50 c=30Ca=10 b=30 c=10 Da=50 b=30 c=50(分数:2.00)A.B.C.D.28.有以下程序:#includestdio.hmain()int x=1,y=2,z=3;if(xy)if(yz)printf(“%d“,+z);else printf(“%d“,+y);printf(“%d/n“,x+);程序的运行结果是_。A331 B41 C2 D1(分数:2.00)A.B.C.D.29.有以下程序:#includestdi
17、o.hmain()int i=5;doif(i%3=1)if(i%5=2)printf(“*%d“,i);break;i+;while(i!=0);printf(“/n“);程序的运行结果是_。A*7 B*3*5 C*5 D*2*6(分数:2.00)A.B.C.D.30.若 x 为 int 变量,则以下语句的输出结果是_。x=1234;printf(“|/%-06d|/n“,x);A输出格式描述符不合法 B输出为|001234|C输出为|1234 | D输出为|-01234|(分数:2.00)A.B.C.D.31.已知定义 k 为 double 类型变量,k=260.72631;printf(
18、“%-6.2e/n“,k);则以上语句的输出结果是_。A输出格式描述的域宽不够,不能输出 B输出为 26.07e+01C输出为 2.6e+02 D输出为-2.64e2(分数:2.00)A.B.C.D.32.若 m 是 int 型变量,n 是 float 型变量,所用的 scanf 调用语句格式为:scanf(“m=%d,n=%f“,m,n);则为了将数据 10 和 66.6 分别赋给 m 和 n,正确的输入应当是_。Am=10,n=66.6回车 B10 66.6回车C10回车66.6回车 Dm=10回车n=66.6回车(分数:2.00)A.B.C.D.33.已知字母 c 的 ASC十进制代码为
19、 99,则执行以下语句后的输出结果为_。char a=c;a-;printf(“%d,%c/n“,a+2-0,a+3-0);Ad,e Ba-运算不合法,故有语法错C100,e D格式描述和输出项不匹配,输出无定值(分数:2.00)A.B.C.D.34.两次执行下面的程序,如果从键盘上分别输入 4 和 2,则输出结果是_。main()int x;scanf(“%d/n“,x);if(x+3)printf(“%d/n“,x);else printf(“%d/n“,x-);A7 和 5 B5 和 3 C7 和 4 D6 和 4(分数:2.00)A.B.C.D.35.下面程序的输出结果是_。main(
20、)int m1=a,m2=e,m3=e;printf(“%d%c/n“,m2-m1,m3-b+A);A2,M B4,D C2,E D输出结果不确定(分数:2.00)A.B.C.D.36.设有定义:long x=745321L,则能正确输出变量 X 的语句是_。Aprintf(“x=%d/n“,x); Bprintf(“x=%LD/n:,x);Cprintf(“x=%dl/n“,x); Dprintf(“x=%ld/n“,x);(分数:2.00)A.B.C.D.37.以下叙述正确的是_。A当输入数据时,必须指明变量的地址,例如,scanf(“%f“,a);B只有格式控制,没有输入项,也能正确输入
21、数据到内存。例如,scanf(“m=%d,n=%d“);C当输入一个实型数据时,格式控制部分可以规定小数点后的位数,例如,scanf(“%5.1f“,a);D输入项可以是一个实型常量,例如,scanf(“%f“,7.5);(分数:2.00)A.B.C.D.38.已知字母 A 的 ASC码值为 65,则下面程序的输出是_。main()char c1,c2;c1=A+5-3;c2=A+6-3;printf(“%d,%c/n“,c1,c2);A67,D BB,C CC,D D不确定的值(分数:2.00)A.B.C.D.39.在 C 语言中的 if 语句中,用作判断的表达式为_。A逻辑表达式 B关系表
22、达式 C任意表达式 D算术表达式(分数:2.00)A.B.C.D.40.为了避免嵌套的条件语句 if-else 的二义性,C 语言规定:与 else 配对的是_。Aif 同一行上的 if B缩排位置相同的 ifC其之前最近的 if D其之后最近的 if(分数:2.00)A.B.C.D.41.有以下程序,输出结果是_。main()int i=15,j=21,n=0;switch(i%3)case 0:n+;break;case 1:n+;switch(j%2)default:n+;case 0:n+:break;pintf(“%d/n“,n);A1 B2 C3 D4(分数:2.00)A.B.C.
23、D.42.设变量 m 和 n 均已正确定义并赋值,以下 if 语句中,在编译时将产生错误信息的是_。Aif(m0)m- else n+; Bif(m+)Cif(mnn!=0) Dif(n0);else m+;(分数:1.00)A.B.C.D.43.阅读以下程序:#includestdio.hmain()int i;scanf(“%d“,i);if(i-5)printf(“%d“,i);elsepfintf(“%d“,i+);程序运行后,如果从键盘上输入 5,则输出结果是_。A2 B3 C4 D5(分数:1.00)A.B.C.D.44.以下程序运行后的输出结果是_。#includestdio.h
24、main()int m=1,n=0,i=0,=0;switch(m)case 1:switch(n)case 0:i+;break;case 1:j+;break;case 2:i+.j+;break;printf(“i=%d,j=%d/n“,i,j);Ai=2,j=1 Bi=1,j=0 Ci=1,j=1 Di=2,j=2(分数:1.00)A.B.C.D.45.运行下面的程序,输出结果是_。main()fiat a=3,b=0,c=0;if(a=b+c)printf(“*“);elseprintf(“#“);A有语法错误,不能通过编译B输出#C可以通过编译,但是不能通过连接,因而不能运行D输出
25、*(分数:1.00)A.B.C.D.46.两次执行下面的程序,分别从键盘上输入 6 和 4,则输出结果是_。main()int x;scanf(“%d“,x);if(x+5)printf(“%d“,x);elseprintf(“%d“,x-);A7 4 B6 3 C7 5 D6 4(分数:1.00)A.B.C.D.47.以下程序运行后的输出结果是_。#includestdio.hmain()int i=0,j=0,k=0,x=35;if(i)x-:else if(j);if(k)x=3;else x=4;printf(“%d/n“,x);A4 B34 C3 D35(分数:1.00)A.B.C.
26、D.48.执行以下程序时,为了使输出结果为:t=4,则给 i 和 j 输入的值应该满足的条件是_。#includestdio.hmain()int s,t,i,j;scanf(“d,d“,i,j);s=1,t=1;if(i0)s=s+1;if(ij)t=s+t;else if(i=j)t=5;elest=2*s;printf(“t=%d/n“,t);Aij B0ij Cij0 D0ij(分数:1.00)A.B.C.D.49.下列关于 switch 语句和 break 语句的结论中,正确的是_。A在 switch 语句中可以根据需要使用或不使用 break 语句B在 switch 语句中必须使用
27、 break 语句Cbreak 语句是 switch 语句的一部分D以上三个结论中有两个是正确的(分数:1.00)A.B.C.D.50.若运行下列程序时,输入以下指定数据,则正确的运行结果是_。#includestdio.hmain()int i;while(i=getchar()!=/n)switch(i)case 0:case 1:putchar(i+4);case 2:putchar(i+4);break;case 3:putchar(i+4);default:putchar(i+2);break;printf(“/n“);输入数据(第一列):2473回车A6688766 B66975
28、C66778777 D668966(分数:1.00)A.B.C.D.51.在 C 语言中_。A不能使用 do-while 语句构成的循环Bdo-while 语句构成的循环必须用 break 语句才能退出Cdo-while 语句构成的循环,当 while 语句中的表达式值为零时结束循环Ddo-while 语句构成的循环,当 while 语句中的表达式值为非零时结束循环(分数:1.00)A.B.C.D.52.以下程序的输出结果是_。#includestdio.hmain()int i;for (i=1;i=5;i+)if(i%2)printf(“*“);else continue;printf(“
29、#“);printf(“$/n“);A#*#*$ B*#*#$ C*#*#*#$ D*#*#*#$(分数:1.00)A.B.C.D.53.请阅读程序:#includemath.h#includestdio.hmain()float a,b,c;scanf(“%f%f“,a,b);c=a/b;while(1)if(fabs(c)1.6)a=b;b=c;c=a/b;else break;printf(“%f/n“,b);若运行时从键盘上输入 3.6 2.4回车,则输出结果是_。A1.500000 B1.600000 C2.000000 D2.400000(分数:1.00)A.B.C.D.54.下面
30、程序的输出是_。main()int i=9;for(;i0;i-)if(i%3=0)printf(“%d“,-i);continue;A741 B852 C963 D875421(分数:1.00)A.B.C.D.55.以下程序中,while 循环的循环次数是_。main()int n=0;while(n10)if(n1)continue;if(n=5)break;n+;A1 B10C6 D死循环,不能确定次数(分数:1.00)A.B.C.D.56.已定义 i 和 j 为 int 类型变量,则以下 for 语句的循环次数是_。for(i=0,j=0;i=9j!=876;i+)scanf(“%d“
31、,j);A最多执行 9 次循环 B循环最多执行 10 次C是无限循环 D循环体一次也不执行(分数:1.00)A.B.C.D.57.下面程序段的执行结果是_。i=3;doprintf(“%2d“,i-);while(!i);A3 B321C不打印任何内容 D陷入死循环(分数:1.00)A.B.C.D.58.执行下列程序的输出结果是_。#includestdio.hmain()int i,j,x=0,y=0;for(i=0;i2,i+)for(j=0;j3;j+)x+;x-=j;y=i+j;printf(“x=%d,y=%d/n“,x,y);Ax=0,y=3 Bx=0,y=5 Cx=1,y=3 D
32、x=1,y=5(分数:1.00)A.B.C.D.59.在 C 语言中 do-while 语句中结束该循环的条件为_。A0 B1 C非 0 Dtrue(分数:1.00)A.B.C.D.(A)二级公共基础知识-6 答案解析(总分:100.00,做题时间:90 分钟)一、单项选择题(总题数:59,分数:100.00)1.有以下程序:#includestdio.hmain()int a=1,b=0;if(!a)b+;else if(a=0) if(a)b+=2;else b+=3;pfintf(“%d/n“,b);程序运行后的输出结果是_。A0 B1 C2 D3(分数:2.00)A. B.C.D.解析
33、:解析 本题考查 if else 语句。最开始 a=1,b=0;此时 if(!a)不成立,转到执行 else if(a=0),由于 a=1,导致对应的语句 if(a)b+=2;else b+=3;不会执行,所以 b 的值没有改变,最后执行printf(“%d/n“,b);输出 0。2.若有定义语句 int a,b; double x;,则下列选项中没有错误的是_。Aswitch(x%2)case 0:a+;break;case 1:b+;break;default:a+;b+;Bswitch(int)x/2.0)case 0:a+;break;case 1:b+;break;default:a
34、+;b+;Cswitch(int)x%2)case 0:a+;break;case 1:b+;break;default:a+;b+;Dswitch(int)(x)%2)case 0.0:a+;break;case 1.0:b+;break;default:a+;b+;(分数:2.00)A.B.C. D.解析:解析 %运算符两边的表达式必须是整型,所以选项 A、B 错误。选项 D 中 switch 后的表达式类型和 case 后的表达式类型不一致。3.有以下程序:#includestdio.hmain()int a=1,b=2;while(a6)b+=a;a+=2;b%=10;printf(“
35、%d,%d/n“,a,b);程序运行后的输出结果是_。A5,11 B7,1 C7,11 D6,1(分数:2.00)A.B. C.D.解析:解析 程序的执行过程如下:a=1 时,b=b+a=3,a=a+2=3,b=b%10=3;a=3 时,b=b+a=6,a=3+2=5,b=b%10=6;a=5 时,b=b+a=11,a=a+2=7,b=b%10=1。此时 a=76 不满足循环条件,退出循环,此时 a=7,b=1。4.有以下程序:#includestdio.hmain()inty=10;while(y-);pfintf(“y=%d/n“,y);程序执行后的输出结果是_。Ay=0 By=-1Cy=
36、1 Dwhile 构成无限循环(分数:2.00)A.B. C.D.解析:解析 在 while 循环中每次变量 y 的值减 1,直到其值等于 0 时退出循环,这时 y 的再减 1 变为-1。5.若有定义:double a=22;int i=0,k=18;,则不符合 C 语言规定的赋值语句是_。Aa=a+,i+; Bi=(a+k)=(i+k);Ci=a%11; Di=!a;(分数:2.00)A.B.C. D.解析:解析 在 C 语言中,求余运算符的运算对象只能是整型,在本题中,变量 a 是一个双精型变量,因此选项 C 中赋值表达式的右侧的表达式是一个非法的表达式。6.若 a 是数值类型,则逻辑表达
37、式(a=1)(a!=1)的值是_。A1 B0C2 D不知道 a 的值,不能确定(分数:2.00)A. B.C.D.解析:解析 在逻辑表达式中,ab,只有在 a 和 b 都为 0 时,表达式的结果才为 0。在题中所给的表达式中 a 要么等于 1,要么不等于 1,肯定会有一方的值为真。7.有如下嵌套的 if 语句:if(ab)if(ac)k=a;else k=c;elseif(bc)k=b;else k=c;以下选项中与上述 if 语句等价的语句是_。Ak=(ab)?a:b;k=(bc)?b:c; Bk=(ab)?(bc)?a:b):(bc)?b:c);Ck=(ab)?(ac)?a:c):(bc)
38、?b:c); Dk=(ab)?a:b;k=(ac)?a:c;(分数:2.00)A.B.C. D.解析:解析 嵌套的 if else 语句的含义是,在变量 a 的值小于变量 b 的值,同时,变量 a 的值小于变量 c 的值时,把变量 a 的值赋给变量 k。在变量 a 的值小于变量 b 的值,同时,变量 a 的值大于等于变量c 的值时,把变量 c 的值赋给变量 k。在变量 a 的值大于等于变量 b 的值,同时,变量 b 的值小于变量 c的值时,把变量 b 的值赋给变量 k。在变量 a 的值大于等于变量 b 的值,同时,变量 b 的值大于等于变量c 的值时,把变量 c 的值赋给变量 k。8.有以下程
39、序:#includestdio.hmain()char a,b,c,d;scanf(“%c%c“,a,b);c=getchar();d=getchar();printf(“%c%c%c%c/n”,a,b,c,d);当执行程序时,按下列方式输入数据(从第 1 列开始,CR代表回车,注意:回车也是一个字符。12CR34CR则输出结果是_。A1234 B12C123D1234(分数:2.00)A.B.C. D.解析:解析 在程序中,scanf 函数把 1 和 2 分别赋给变量 a 和 b,getchar()函数把回车符赋给变量c,getchar()函数把 3 赋给变量 d。9.有以下程序:#incl
40、udestdio.hmain()int i,j,m=1;for(i=1;i3;i+)for(j=3;j0;j-)if(i*j3)break;m*=i*j;printf(“m=%d/n“,m);程序运行后的输出结果是_。Am=6 Bm=2 Cm=4 Dm=5(分数:2.00)A. B.C.D.解析:解析 这道题考查了 for 循环的嵌套应用。对于外层 for 循环来说,变量 i 从 1 增到 2,循环执行 2 次。当变量 i 的值等于 1 时,对于内层 for 循环来说,变量 j 从 3 减到 1,求得变量 m 的值等于 6。当变量 i 的值等于 2 时,第一遍执行内层 for 循环,变量 j
41、的值等于 3,那么 i*j 的值等于 6,其值大于3,这时执行 break 语句,退出内层 for 循环的执行。所以程序输出变量 m 的值为 6。10.有以下程序:#includestdio.hvoid main()int n=2,k=0;while(k+n+2);printf(“%d%d/n“,k,n);程序运行后的输出结果是_。A0 2 B1 3 C5 7 D1 2(分数:2.00)A.B.C.D. 解析:解析 在程序中整型变量 n 的初始值等于 2,整型变量 k 的初始值等于 0,在执行 while 语句时,由于表达式 k+的值等于 0,所以 while 语句中的条件不满足,循环语句不会
42、执行,但是变量 k 的值会加1,所在输出变量 k 和 n 的值是 1 和 2。11.阅读以下程序:#includestdio.hmam()int case;float printF;printf(“请输入 2 个数:“);scanf(“%d%f“,case,printf);printf(“%d%f/n“,case,printtf);该程序在编译时产生错误,其出错原因是_。A定义语句出错,case 是关键字,不能用作用户自定义标识符B定义语句出错,printf 不能作用户自定义标识符C定义语句无错,scanf 不能作为输入函数使用D定义语句无错,printf 不能输出 case 的值(分数:2.
43、00)A. B.C.D.解析:解析 case 是 C 语言中的一个关键字,不能用作用户标识符来使用,所以这段程序代码在编译时就会出错。12.有以下程序:#includestdio.hvoid main()int a=1,b=0;pfintf(“%d,“,b=a+b);printf(“%d/n“,a=2%);程序运行后的输出结果是_。A0,0 B1,0 C3,2 D1,2(分数:2.00)A.B.C.D. 解析:解析 在主函数中定义了两个整型变量 a 和 b,并把它们的初值分别设置为 1 和 0;在第 2 条语句中,首先计算出 a 和 b 的和等于 1,把此值赋给变量 b,并在屏幕上输出此时变量
44、 b 的值 1;在第 3 条语句中,计算出 2 乘以 1 的积等于 2,把 2 赋给变量 a,再把变量 a 的值在屏幕上输出。13.设有定义:int a=1,b=2,c=3;,以下语句中执行效果与其他 3 个不同的是_。Aif(ab)c=a,a=b,b=c; Bif(ab)c=a,a=b,b=c;Cif(ab)c=a;a=b;b=c; Dif(ab)c=a;a=b;b=c;(分数:2.00)A.B.C. D.解析:解析 在 C 语言中,用分号表示一条语句的结束,用把几条语句放在一块表示一个语句块,其整体表示一个功能。在本题给出的 4 个选项中,选项 A、B、D 表示的功能相同,而选项 C 表示
45、的是一条if 语句和两条赋值语句。14.有以下程序#includestdio.hvoid main()int c=0,k;for(k=1;k3;k+)switch(k)default:c+=k;case 2:c+;break;case 4:c+=2;break;printf(“%d/n“,c);程序运行后的输出结果是_。A3 B5 C7 D9(分数:2.00)A. B.C.D.解析:解析 在这段程序中,整型变量 c 的初始值赋为 0,在第一次执行 for 循环语句时,因为此时变量 k 的值等于 1,所以在 switch 语句中首先执行 default 语句,变量 c 的值加 1,由于 default 语句后面没有 break 语句,会接着执行 case 2 语句,再给变量 c 的值加 1,其值变为 2,这时退出 switch 语句块,进入第 2 次 for 循环,此时 k 的值等于 2,就会执行 switch 语句块中的 case 2 语句,再给变量 c 的值加1,这时变量 c 的值就是 3,此时退出 switch 语句块,循环变量 k 的值加 1,成为 3,此时已不再满足循环条件,执行程序中的最后一条语句,把变量 c 的值在屏幕上输出。15.有以下程序:#includestdio.hvoid main()char c1,c2;c1=A+8-4;c2=A+8-5;