1、二级 C 语言笔试选择题-3 及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:45,分数:100.00)1.若有以下程序#includestdio.hmain()int a=-2,b=0;while(a+)+b;printf(“%d,%d/n“,a,b);则程序的输出结果是_。A1,2 B0,2 C1,3 D2,3(分数:2.00)A.B.C.D.2.有以下程序#includestdio.hmain()int a=-2,b=0;while(a+b);printf(“%d,%dkn“,a,b);程序运行后输出结果是_。A1,2 B0,3 C1,3 D0,2(分数:2.0
2、0)A.B.C.D.3.有以下程序#includestdio.hmain()int y=9;for(;y0;y-)if(y%3=0)printf(“%d“,-y);程序的运行结果是_。A852 B963 C741 D875421(分数:2.00)A.B.C.D.4.有以下程序#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);程序运行后的输出结果是_。Am=6 Bm=2 Cm=4 Dm=5(分数:2.00)A.B.C.D.5.有以下程序#incl
3、udestdio.hmain()int i;for(i=1;i=40;i+)if(i+%5=0)if(+i%8=0)printf(“%d“,i);printf(“/n“1);执行后的输出结果是_。A32 B24 C5 D40(分数:2.00)A.B.C.D.6.有以下程序#includestdio.hmain()int i,sum;for(i=1;i6;i+)sum+=i;printf(“%d/n“,sum);程序运行后的输出结果是_。A随机值 B0 C15 D16(分数:2.00)A.B.C.D.7.以下叙述中正确的是_。A只要适当地修改代码,就可以将 do-while 与 while 相互
4、转换B对于“for(表达式 1;表达式 2;表达式 3)循环体“首先要计算表达式 2 的值,以便决定是否开始循环C对于“for(表达式 1;表达式 2;表达式 3)循环体“,只在个别情况下才能转换成 while 语句D如果根据算法需要使用无限循环(即通常所称的“死循环”),则只能使用 while 语句(分数:2.00)A.B.C.D.8.若变量已正确定义for(x=0,y=0;(y!=99x4);x+)则以上 for 循环_。A执行 4 次 B执行 3 次 C执行无限次 D执行次数不定(分数:2.00)A.B.C.D.9.若有以下程序#includestdio.hmain()int a=6,b
5、=0,c=0;for(;a;)b+=a;a-=+c;printf(“%d,%d,%d/n“,a,b,c);则程序的输出结果是_。A0,14,3 B1,14,3 C0,18,3 D0,14,6(分数:2.00)A.B.C.D.10.有以下程序#includestdio.hmain()int i=5;doif(i%3=1)if(i%5=2)(printf(“%d“,i);break;i+;while(i!=0);printf(“/n“1);程序的运行结果是_。A*7 B*3*5 C*5 D*2*6(分数:2.00)A.B.C.D.11.若变量已正确定义,有以下程序段i=0;do printf(“%
6、d,“,i);while(i+);printf(“%d/n“,i);其输出结果是_。A0,1 B0,0 C1,1 D程序进入无限循环(分数:2.00)A.B.C.D.12.若有以下程序#includestdio.hmain()int a=-2,b=0;do+b;while(a+);printf(“%d,%d/n“,a,b);则程序的输出结果是_。A1,3 B0,2 C1,2 D2,3(分数:2.00)A.B.C.D.13.以下程序段中的变量已正确定义for(i=0;i4;i+,i+)for(k=1;k3;k+);printf(“*“);该程序段的输出结果是_。A* B* C* D*(分数:2.
7、00)A.B.C.D.14.有以下程序#includestdio.hmain()int i,j;for(i=3;i=1;i-)for(j=1;j=2;j+)printf(“%d“,i+j);printf(“/n“);程序的运行结果是_。A453423B432543C233445D233423(分数:2.00)A.B.C.D.15.有以下程序#includestdio.hmain()int i,j,m=55;for(i=1;i=3;i+)for(j=3;j=i;j+)m=m%j;printf(“%d/n“,m);程序的运行结果是_。A1 B0 C2 D3(分数:2.00)A.B.C.D.16.以
8、下叙述中正确的是_。Abreak 语句只能用在循环体内和 switch 语句体内Bcontinue 语句的作用是:使程序的执行流程跳出包含它的所有循环C在循环体内使用 break 语句和 continue 语句的作用相同Dbreak 语句只能用于 switch 语句体中(分数:2.00)A.B.C.D.17.以下叙述中正确的是_。A使用 break 语句可以使流程跳出 switch 语句体Bbreak 语句不能用于提前结束 for 语句的本层循环Ccontinue 语句使得整个循环终止D在 for 语句中,continue 与 break 的效果是一样的,可以互换(分数:2.00)A.B.C.
9、D.18.有以下程序#includestdio.hmain()int i,j,x=0;for(i=0;i2;i+)x+;for(j=0;j=3;j+)if(j%2)continue;x+;x+;printf(“x=%d/n“,x);程序执行后的输出结果是_。Ax=8 Bx=4 Cx=6 Dx=12(分数:2.00)A.B.C.D.19.有以下程序#includestdio.hmain()int x=8;for(;x0;x-)if(x%3)printf(“%d,“,x-);continue;printf(“%d,“,-x);程序的运行结果是_。A8,5,4,2, B8,7,5,2, C9,7,6
10、,4, D7,4,2,(分数:4.00)A.B.C.D.20.下列定义数组的语句中,正确的是_。A#define N 10Bint N=10;int xN;Cint x010;Dint x;int xN;(分数:2.00)A.B.C.D.21.下列选项中,能正确定义数组的语句是_。A#define N 2008int numN;Bint num;int numN;Cint N=2008;int numN;Dint num02008;(分数:2.00)A.B.C.D.22.以下叙述中正确的是_。A每个数组包含一组具有同一类型的变量,这些变量在内存中占有连续的存储单元B一条语句只能定义一个数组C数
11、组说明符的一对方括号中只能使用整型常量,而不能使用表达式D在引用数组元素时,下标表达式可以使用浮点数(分数:2.00)A.B.C.D.23.以下叙述中正确的是_。A语句 int a8=0;是合法的B语句 int a=0;是不合法的,遗漏了数组的大小C语句 char a2=“t“,“B“;是合法的,定义了一个包含两个字符的数组D语句 char a3;a=“AB“;是合法的,因为数组有三个字符空间的容量,可以保存两个字符(分数:2.00)A.B.C.D.24.有以下程序#includestdio.hmain()int x32=0,i;for(i=0;i3;i+)scanf(“%d“,xi);pri
12、ntf(“%3d%3d%3d/n“,x00,x01,x10);若运行时输入:246回车,则输出结果为_。A204 B200 C240 D246(分数:2.00)A.B.C.D.25.以下数组定义中错误的是_。Aint x23=1,2,(3,4,5,6; Bint x3=0;Cint x3=1,2,3,4,5,6; Dint x23=1,2,3,4,5,6;(分数:2.00)A.B.C.D.26.以下定义数组的语句中错误的是_。Aint num24=1,2,3,4,5,6 Bint num3=1,2,3,4,5,6);Cint num=1,2,3,4,5,6; Dint num4=1,2,3,4
13、,5,6;(分数:2.00)A.B.C.D.27.以下错误的定义语句是_。Aint x4=1,2,3,1,2,3,1,2,3,1,2,3; Bint x43=1,2,3,1,2,3,1,2,3,1,2,3;Cint x3=0,1,1,2,3; Dint x3=1,2,3,4;(分数:2.00)A.B.C.D.28.有以下程序#includestdio.hmain()int b33=0,1,2,0,1,2,0,1,2,i,j,t=1;for(i=0;i3;i+)for(j=i;j=i;j+)t+=bibji;printf(“%d/n“,t);程序运行后的输出结果是_。A4 B3 C1 D9(分数
14、:2.00)A.B.C.D.29.有以下程序#includestdio.hmain()int a44=1,4,3,2,8,6,5,7,3,7,2,5,4,8,6,1);int i,j,k,t;for(i=0;i4;i+)for(j=0;j3;j+)for(k=j+1;k4;k+)if(ajiaki)t=aji;aji=aki;aki=t;/*按列排序*/for(i=0;i4;i+)printf(“%d,“,aii);程序运行后的输出结果是_。A1,6,5,7, B8,7,3,1, C4,7,5,2, D1,6,2,1,(分数:2.00)A.B.C.D.30.有以下程序#includestdio
15、.hmain()int i,t3=9,8,7,6,5,4,3,2,1;for(i=0;i3;i+)printf(“%d“,t2-ii);程序执行后的输出结果是_。A357 B753 C369 D751(分数:2.00)A.B.C.D.31.下列叙述中正确的是_。A两个连续的双引号(“)是合法的字符串常量B两个连续的单引号(“)是合法的字符常量C可以对字符串进行关系运算D空字符串不占用内存,其内存空间大小是 0(分数:2.00)A.B.C.D.32.以下叙述中正确的是_。A对于字符串常量“string!“,系统已自动在最后加入了/0字符,表示串结尾B语句 char str10=“string!“
16、;和 char str10=“string!“;并不等价C对于一维字符数组,不能使用字符串常量来赋初值D在语句 char str=“string!“;中,数组 str 的大小等于字符串的长度(分数:2.00)A.B.C.D.33.设有定义:char s81;int i=0;以下不能将一行(不超过 80 个字符)带有空格的字符串正确读入的语句或语句组是_。Ascanf(“%s“,s); Bwhile(si+=getchar()!=/n);si=/0;Cgets(s); Ddoscanf(“%c“,si);while(si+!=/n);si=/0;(分数:2.00)A.B.C.D.34.有以下程序
17、#includestdio.hmain()char s=“012xy/08s34f4w2“;int i,n=0;for(i=0,si!=0;i+)if(si=“0“si=9)n+;printf(“%d/n“,n);程序运行后的输出结果是_。A3 B0 C7 D8(分数:2.00)A.B.C.D.35.下列语句组中,正确的是_。Achar*s;s=“Olympic“; Bchar s7;s=“Olympic“;Cchar*s;s=“Olympic“; Dchar s7;s=(“Olympic“);(分数:2.00)A.B.C.D.36.以下选项中正确的语句组是_。Achar*s;s=“BOOK!
18、“; Bchar*s;s=“BOOK!“;Cchar s10;s=“BOOK!“; Dchar s;s=“BOOK!“;(分数:2.00)A.B.C.D.37.有以下程序#includestdio.hmain()char c25=“6938“,“8254“,*p2;int i,j,s=0;for(i=0;i2;i+)pi=ci;for(i=0;i2;i+)for(j=0;pij0;j+=2)s=10*s+pij-0;printf(“%d/n“,s);程序运行后的输出结果是_。A6385 B9824 C6982 D9284(分数:2.00)A.B.C.D.38.下面选项中的程序段,没有编译错误的
19、是_。Achar*sp,s10;sp=“HeHo“;Bchar*sp,s10;s=“Hello“;Cchar str110=“computer“,str210;str2=str1;Dchar mark;mark=“PROGRAM“;(分数:2.00)A.B.C.D.39.以下叙述中正确的是_。A不能用字符串常量对字符数组名进行整体赋值操作B字符串常量“Hello“会被隐含处理成一个无名字符型数组,它有 5 个元素Cchar str7=“string!“;在语法上是合法的,运行也是安全的Dchar *str;str=“Hello“;与 char str;str=“Hello“;效果是一样的(分数
20、:2.00)A.B.C.D.40.若要求从键盘读入含有空格字符的字符串,应使用函数_。Agets() Bgetc() Cgetchar() Dscan()(分数:2.00)A.B.C.D.41.有以下程序#includestdio.hchar fun(char*c)if(*c=Z*c=A)*c-=A-a;return*c;main()char s81,*p=s;gets(s);while(*p)*p=fun(p);putchar(*p);p+;printf(“/n“);若运行时从键盘上输入 OPEN THE DOOR回车,程序的输出结果是_。Aopen the door BoPEN tHE d
21、OORCOPEN THE DOOR DOpen The Door(分数:2.00)A.B.C.D.42.有以下程序#includestdio.h#includestring.hmain()char str20=“One*World“,“One*Dream!“),/p=str1;printf(“%d,“,strlen(p);printf(“%s/n“,p);程序运行后的输出结果是_。A10,One*Dream! B9,One*Dream! C9,One*World D10,One*World(分数:4.00)A.B.C.D.43.若有定义语句:char s10=“1234567/0/0“;则 s
22、trlen(s)的值是_。A7 B8 C9 D10(分数:4.00)A.B.C.D.44.若有定义语句:char*s1=“OK“,*s2=“ok“;以下选项中,能够输出“OK“的语句是_。Aif(strcmp(s1,s2)=0)puts(s1); Bif(strcmp(s1,s2)!=0)puts(s2);Cif(strcmp(s1,s2)=1)puts(s1); Dif(strcmp(s1,s2)=0)puts(s1);(分数:4.00)A.B.C.D.45.若有以下定义和语句#includestdio.hchar s110=“abcd!“,*s2=“/n123/“;printf(“%d%d
23、/n“,strlen(s1),strlen(s2);则输出结果是_。A5 5 B10 5 C10 7 D5 8(分数:4.00)A.B.C.D.二级 C 语言笔试选择题-3 答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:45,分数:100.00)1.若有以下程序#includestdio.hmain()int a=-2,b=0;while(a+)+b;printf(“%d,%d/n“,a,b);则程序的输出结果是_。A1,2 B0,2 C1,3 D2,3(分数:2.00)A. B.C.D.解析:解析 当 a 为 0,循环条件不成立,执行判断语句后 a 为 1,循环共执
24、行 2 次,所以 b 为 2,答案选择 A。2.有以下程序#includestdio.hmain()int a=-2,b=0;while(a+b);printf(“%d,%dkn“,a,b);程序运行后输出结果是_。A1,2 B0,3 C1,3 D0,2(分数:2.00)A. B.C.D.解析:解析 当 a 等于 0,a+表达式为 0,条件不成立,最终 a 为 1,b 为 2,答案选择 A。3.有以下程序#includestdio.hmain()int y=9;for(;y0;y-)if(y%3=0)printf(“%d“,-y);程序的运行结果是_。A852 B963 C741 D87542
25、1(分数:2.00)A. B.C.D.解析:解析 第一次执行 for 循环,y 的值为 9,y%3 的值为 0,满足条件输出-y,即先减一后输出,因此输出 8;第二次执行 for 循环,y 的值为 7,y%3 的值为 1,不执行输出语句;第三次执行 for 循环,y的值为 6,y%3 的值为 0,满足条件输出-y,即先减一后输出,因此打印 5;第四次执行 for 循环,y 的值为 4,不满足 if 条件,不执行输出语句;第五次执行 for 循环,y 的值为 3,满足 if 条件,输出 2;第六次执行 for 循环,y 的值为 1,不满足条件,不执行输出语句。故本题答案为 A。4.有以下程序#i
26、ncludestdio.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.解析:解析 第一次外循环 i 的值为 1,第一次内循环 j 的值为 3,不满足条件,则执行 m*=i*j 即 m 的值为 3;第二次 j 的值为 2,不满足条件,则执行 m*=i*j,即 m 的值为 6;第三次 j 的值为 1,不满足条件,则执行 m*=i*j,即 m 的值仍为 6。第二次外循环 i
27、的值为 2,j 的值为 3,满足条件,执行 break 语句,跳出循环。故本题答案为 A。5.有以下程序#includestdio.hmain()int i;for(i=1;i=40;i+)if(i+%5=0)if(+i%8=0)printf(“%d“,i);printf(“/n“1);执行后的输出结果是_。A32 B24 C5 D40(分数:2.00)A. B.C.D.解析:解析 本题考查了自增运算符。自增运算符“+”分为前缀和后缀两种形式。两种形式的作用效果是一样的,都是使运算分量的值加 1,但是它们的表达式的值不一样,前缀形式表达式的值为运算分量加 1 之后的值,而后缀形式表达式的值为运
28、算分量加 1 之前的值。题目中使用了一个 for 循环,循环变量i 从 1 递增到 40。在循环体中有两条嵌套的 if 语句,首先判断 i+%5=0,即判断 i+的值(i 加 1 之前的值)是否能被 5 整除(判断后 i 被加 1),然后再判断+i 的值(i 加 1 之后的值)是否能被 8 整除(判断后 i被加 1),若两个条件都满足了,就输出 i 的值,只有 i=30 时,满足 i+%5=0,此时 i=31, +i%8=0 成立,此时 i=32。6.有以下程序#includestdio.hmain()int i,sum;for(i=1;i6;i+)sum+=i;printf(“%d/n“,s
29、um);程序运行后的输出结果是_。A随机值 B0 C15 D16(分数:2.00)A. B.C.D.解析:解析 sum 没有初始化,为随机值,再加上若干值,仍为随机值。答案选择 A。7.以下叙述中正确的是_。A只要适当地修改代码,就可以将 do-while 与 while 相互转换B对于“for(表达式 1;表达式 2;表达式 3)循环体“首先要计算表达式 2 的值,以便决定是否开始循环C对于“for(表达式 1;表达式 2;表达式 3)循环体“,只在个别情况下才能转换成 while 语句D如果根据算法需要使用无限循环(即通常所称的“死循环”),则只能使用 while 语句(分数:2.00)A
30、. B.C.D.解析:解析 do-while 与 while 可以相互转换,所以选择 A。8.若变量已正确定义for(x=0,y=0;(y!=99x4);x+)则以上 for 循环_。A执行 4 次 B执行 3 次 C执行无限次 D执行次数不定(分数:2.00)A. B.C.D.解析:解析 该循环分别在 x 取值为 0、1、2、3 时各执行一次,所以本题答案为 A。9.若有以下程序#includestdio.hmain()int a=6,b=0,c=0;for(;a;)b+=a;a-=+c;printf(“%d,%d,%d/n“,a,b,c);则程序的输出结果是_。A0,14,3 B1,14,
31、3 C0,18,3 D0,14,6(分数:2.00)A. B.C.D.解析:解析 循环执行 3 次,使 a 为 0,循环结束,最终 a b c 分别为 0 14 3,所以选择 A。10.有以下程序#includestdio.hmain()int i=5;doif(i%3=1)if(i%5=2)(printf(“%d“,i);break;i+;while(i!=0);printf(“/n“1);程序的运行结果是_。A*7 B*3*5 C*5 D*2*6(分数:2.00)A. B.C.D.解析:解析 本题考查的是 break 语句。dowhile 循环是“先执行,后判断”,所以无论条件如何,它都至
32、少会执行一遍。程序首先初始化变量 i 为 5,然后进入 dowhile 循环体,首先判断(i%3=1),因为 5%3=2,所以 if 条件不满足,跳过下面的 if 语句,执行 i+,i 变为 6。第 1 遍循环结束,判断(i!=0)为真,继续循环。现在 i%3=6%3=0,所以 if 语句还是不被执行,继续 i+,i 变为 7,仍然满足(i!=0),继续循环。第 3 遍循环 i%3=7%3=1,满足条件(i%3=1),继续判断条件 i%5=2 成立,即输出*7,然后执行 break 语句跳出循环。11.若变量已正确定义,有以下程序段i=0;do printf(“%d,“,i);while(i+
33、);printf(“%d/n“,i);其输出结果是_。A0,1 B0,0 C1,1 D程序进入无限循环(分数:2.00)A. B.C.D.解析:解析 循环语句中输出 0,i 为 0 循环结束,执行循环条件后 i 为 1,输出 1,所以选择为 A。12.若有以下程序#includestdio.hmain()int a=-2,b=0;do+b;while(a+);printf(“%d,%d/n“,a,b);则程序的输出结果是_。A1,3 B0,2 C1,2 D2,3(分数:2.00)A. B.C.D.解析:解析 当 a 为 0 时循环条件不成立,执行完循环条件后 a 为 1,循环共执行 3 次,所
34、以 b 值为 3。13.以下程序段中的变量已正确定义for(i=0;i4;i+,i+)for(k=1;k3;k+);printf(“*“);该程序段的输出结果是_。A* B* C* D*(分数:2.00)A. B.C.D.解析:解析 由于内层循环 for(k=1;k3;k+)后面直接跟了空语句“;”因此在循环内部什么操作也不做,执行完内层循环后执行输出语句,所以输出了一个“*”,故本题答案 A。14.有以下程序#includestdio.hmain()int i,j;for(i=3;i=1;i-)for(j=1;j=2;j+)printf(“%d“,i+j);printf(“/n“);程序的运
35、行结果是_。A453423B432543C233445D233423(分数:2.00)A. B.C.D.解析:解析 第一次循环 i 为 3,j 值分别为 1 2,所以输出为 4 5;第二次循环 i 值为 2,j 值分别为 1 2,所以输出为 3 4;第三次循环 i 值为 1,j 值分别为 1 2 所以输出为 2 3,答案选择 A。15.有以下程序#includestdio.hmain()int i,j,m=55;for(i=1;i=3;i+)for(j=3;j=i;j+)m=m%j;printf(“%d/n“,m);程序的运行结果是_。A1 B0 C2 D3(分数:2.00)A. B.C.D.
36、解析:解析 虽为 for 循环嵌套,但是 m=m%j 语句只执行一次,即当 i3 时,内层循环条件成立,m=55% 3=1,故本题答案选 A。16.以下叙述中正确的是_。Abreak 语句只能用在循环体内和 switch 语句体内Bcontinue 语句的作用是:使程序的执行流程跳出包含它的所有循环C在循环体内使用 break 语句和 continue 语句的作用相同Dbreak 语句只能用于 switch 语句体中(分数:2.00)A. B.C.D.解析:解析 本题主要考查的知识点是:break 和 continue 语句。break 语句可以用于 switch 或循环体内,作用是跳出 sw
37、itch 或循环体。continue 语句只能用于循环体内,作用是结束当前循环,进入下次循环。故本题中只有选项 A 是正确的。17.以下叙述中正确的是_。A使用 break 语句可以使流程跳出 switch 语句体Bbreak 语句不能用于提前结束 for 语句的本层循环Ccontinue 语句使得整个循环终止D在 for 语句中,continue 与 break 的效果是一样的,可以互换(分数:2.00)A. B.C.D.解析:解析 break 跳出 switch 语句或循环语句,contiune 结束本次循环,继续进行剩余的循环。所以答案选择 A。18.有以下程序#includestdio
38、.hmain()int i,j,x=0;for(i=0;i2;i+)x+;for(j=0;j=3;j+)if(j%2)continue;x+;x+;printf(“x=%d/n“,x);程序执行后的输出结果是_。Ax=8 Bx=4 Cx=6 Dx=12(分数:2.00)A. B.C.D.解析:解析 本题考查的是 for 循环的嵌套。外循环的循环变量 i 从 0 递增到 1 会循环 2 次,内循环的循环变量 j 从 0 递增到 3 会循环 4 次。但是内循环中有一条 if 语句,每当 j%2 为真,即 j 为奇数时会跳过下面的 x+;语句,所以 4 次内循环只有 2 次执行到 x+;语句,再加上
39、外循环中包含的 2 条 x+;语句,所以每次外循环会使 x 自增 4 次,2 次外循环下来 x 的值为 8。故应该选择 A。19.有以下程序#includestdio.hmain()int x=8;for(;x0;x-)if(x%3)printf(“%d,“,x-);continue;printf(“%d,“,-x);程序的运行结果是_。A8,5,4,2, B8,7,5,2, C9,7,6,4, D7,4,2,(分数:4.00)A. B.C.D.解析:解析 第一次 x 为 8,输出 8,第二次 x 为 6,输出 5,第三次 x 为 4,输出 4,第四次 x 为 2,输出 2,循环结束,所以答案
40、选择 A。20.下列定义数组的语句中,正确的是_。A#define N 10Bint N=10;int xN;Cint x010;Dint x;int xN;(分数:2.00)A. B.C.D.解析:解析 定义数组长度必须为常数,所以 A 正确。21.下列选项中,能正确定义数组的语句是_。A#define N 2008int numN;Bint num;int numN;Cint N=2008;int numN;Dint num02008;(分数:2.00)A. B.C.D.解析:解析 数组定义的长度必须为常量,所以 A 选项正确。22.以下叙述中正确的是_。A每个数组包含一组具有同一类型的变
41、量,这些变量在内存中占有连续的存储单元B一条语句只能定义一个数组C数组说明符的一对方括号中只能使用整型常量,而不能使用表达式D在引用数组元素时,下标表达式可以使用浮点数(分数:2.00)A. B.C.D.解析:解析 数组的元素是同一类型,占用连续空间,所以选择 A。23.以下叙述中正确的是_。A语句 int a8=0;是合法的B语句 int a=0;是不合法的,遗漏了数组的大小C语句 char a2=“t“,“B“;是合法的,定义了一个包含两个字符的数组D语句 char a3;a=“AB“;是合法的,因为数组有三个字符空间的容量,可以保存两个字符(分数:2.00)A. B.C.D.解析:解析
42、int a8 = 0;表示将数组第一个元素赋值为 0,其余元素默认清 0,是合法的。所以选择 A。24.有以下程序#includestdio.hmain()int x32=0,i;for(i=0;i3;i+)scanf(“%d“,xi);printf(“%3d%3d%3d/n“,x00,x01,x10);若运行时输入:246回车,则输出结果为_。A204 B200 C240 D246(分数:2.00)A. B.C.D.解析:解析 本题中输入的 3 个数据 2,4,6 分别赋给了 x00,x10,x20。x01仍为初始时的 0,因此输出时的结果为 A 选项。25.以下数组定义中错误的是_。Ain
43、t x23=1,2,(3,4,5,6; Bint x3=0;Cint x3=1,2,3,4,5,6; Dint x23=1,2,3,4,5,6;(分数:2.00)A. B.C.D.解析:解析 本题考核的知识点是二维数组的定义及初始化。在定义一个二维数组同时初始化时,其第一维的长度可以省略。二维数组的初始化列表可以只使用一重花括号,其中的每个值依次代表从第 1 行的第 1 个元素起,直到第 1 行满,接着代表第 2 行、第 3 行的每一个元素,若第 1 维长度没有省略,则这些值总个数不得超过两个维度的乘积。故选项 D 是正确的。二维数组的初始化列表还可以使用二重花括号括起来,其中每一个内花括号代
44、表一行的值,在内花括号中值的个数不得超过数组第二维的长度,若不足第 2 维长度,则该行多出部分值被初始化为 0,若第一维省略,花括号的个数代表行数。A 选项第一维为 2,故只有两行,但有三个花括号超出了行的要求,所以本题答案选 A。26.以下定义数组的语句中错误的是_。Aint num24=1,2,3,4,5,6 Bint num3=1,2,3,4,5,6);Cint num=1,2,3,4,5,6; Dint num4=1,2,3,4,5,6;(分数:2.00)A. B.C.D.解析:解析 int num24定义 2 行 4 列数组,赋值给 num 数组 3 行错误。所以选择 A。27.以下
45、错误的定义语句是_。Aint x4=1,2,3,1,2,3,1,2,3,1,2,3; Bint x43=1,2,3,1,2,3,1,2,3,1,2,3;Cint x3=0,1,1,2,3; Dint x3=1,2,3,4;(分数:2.00)A. B.C.D.解析:解析 二维数组定义行数可以省略,列数不能省略,所以答案选择 A。28.有以下程序#includestdio.hmain()int b33=0,1,2,0,1,2,0,1,2,i,j,t=1;for(i=0;i3;i+)for(j=i;j=i;j+)t+=bibji;printf(“%d/n“,t);程序运行后的输出结果是_。A4 B3 C1 D9(分数:2.00)A. B.C.D.解析:解析 每次内循环只循环一次就结束,第一次外循环时 t=t+b0b00=1+b00=1+0=1;第二次外循环时