1、二级 C 语言-72 及答案解析(总分:100.00,做题时间:90 分钟)一、B选择题/B(总题数:40,分数:40.00)1.一个栈的初始状态为空。现将元素 1、2、3、4、5、A、B、C、D、E 依次入栈,然后再依次出栈,则元素出栈的顺序是_。 A.12345ABCDE B.EDCBA54321 C.ABCDE12345 D.54321EDCBA(分数:1.00)A.B.C.D.2.下列叙述中正确的是_。 A.循环队列有队头和队尾两个指针,因此,循环队列是非线性结构 B.在循环队列中,只需要队头指针就能反映队列中元素的动态变化情况 C.在循环队列中,只需要队尾指针就能反映队列中元素的动态
2、变化情况 D.循环队列中元素的个数由队头指针和队尾指针共同决定(分数:1.00)A.B.C.D.3.在长度为 n 的有序线性表中进行二分法查找,最坏情况下需要比较的次数是_。 A.O(n) B.O(n2) C.O(log2n) D.O(nlog2n)(分数:1.00)A.B.C.D.4.下列叙述中正确的是_。 A.顺序存储结构的存储空间一定是连续的,链式存储结构的存储空间不一定是连续的 B.顺序存储结构只针对线性结构,链式存储结构只针对非线性结构 C.顺序存储结构能存储有序表,链式存储结构不能存储有序表 D.链式存储结构比顺序存储结构节省存储空间(分数:1.00)A.B.C.D.5.数据流图中
3、带有箭头的线段表示的是_。 A.控制流 B.事件驱动 C.模块调用 D.数据流(分数:1.00)A.B.C.D.6.在软件开发中,需求分析阶段可以使用的工具是_。 A.N-S 图 B.DFD 图 C.PAD 图 D.程序流程图(分数:1.00)A.B.C.D.7.在面向对象方法中,不属于“对象”基本特点的是_。 A.一致性 B.分类性 C.多态性 D.标识唯一性(分数:1.00)A.B.C.D.8.一间宿舍可住多名学生,则实体宿舍和学生之间的联系是_。 A.一对一 B.一对多 C.多对一 D.多对多(分数:1.00)A.B.C.D.9.在数据管理技术发展的三个阶段中,数据共享最好的是_。 A.
4、人工管理阶段 B.文件系统阶段 C.数据库系统阶段 D.三个阶段相同(分数:1.00)A.B.C.D.10.有三个关系 R、S 和 T 如下: RA Bm 1n 2SB C1 33 5TA B Cm 1 3由关系 R 和 S 通过运算得到关系 T,则所使用的运算为_。 A.笛卡儿积 B.交 C.并 D.自然连接(分数:1.00)A.B.C.D.11.以下叙述中错误的是_。 A.使用三种基本结构构成的程序只能解决简单问题 B.结构化程序由顺序、分支、循环三种基本结构组成 C.C 语言是一种结构化程序设计语言 D.结构化程序设计提倡模块化的设计方法(分数:1.00)A.B.C.D.12.以下四个程
5、序中,完全正确的是_。 A.#include stdio.hmain(); /*/programming/*/printf(“programming!/n“); B.#include main() /*programming*/printf(“programming!/n“); C.#include stdio.hmain() /*/*programming*/*/ printf(“programming!/n“); D.include main() /*programming*/printf(“programming!/n“);(分数:1.00)A.B.C.D.13.C 源程序中不能表示的数
6、制是_。 A.十进制 B.八进制 C.二进制 D.十六进制(分数:1.00)A.B.C.D.14.以下选项中,能用作用户标识符的是_。 A._0_ B.8_8 C.void D.unsigned(分数:1.00)A.B.C.D.15.若有定义语句“int x=10;”,则表达式“x-=x+x”的值为_。 A.10 B.-20 C.0 D.-10(分数:1.00)A.B.C.D.16.有以下程序#include stdio.hmain() int a=1,b=0;printf(“%d,“,b=a+b);printf(“%d/n“,a=2*b);程序运行后的输出结果是_。 A.1,2 B.1,0
7、C.3,2 D.0,0(分数:1.00)A.B.C.D.17.有以下程序#include stdio.hmain() int a1,a2;char c1,c2;scanf(“%d%c%d%c“,printf(“%d,%c,%d,%c“,a1,c1,a2,c2);若想通过键盘输入,使得 a1 的值为 12,a2 的值为 34,c1 的值为字符 a,c2 的值为字符 b,程序输出结果是 12,a,34,b 则正确的输入格式是_(代表空格字符)。 A.12a34bCR B.12a34bCR C.12,a,34,bCR D.12a34bCR(分数:1.00)A.B.C.D.18.若变量已正确定义,在“
8、if(W)printf(“%d/n“,k);”中,以下不可替代 W 的是_。 A.a=b+c B.ch=getchar() C.ab+c D.a+(分数:1.00)A.B.C.D.19.有以下程序段#include stdio.hmain()int a,b,c;a=10; b=50; c=30;if(ab)a=b, b=c; c=a;printf(“a=%d b=%d c=%d/n“,a,b,c);程序的输出结果是_。 A.a=10 b=50 c=10 B.a=10 b=50 c=30 C.a=10 b=30 c=10 D.a=50 b=30 c=50(分数:1.00)A.B.C.D.20.下
9、列叙述中正确的是_。 A.在 switch 语句中,不一定使用 break 语句 B.在 switch 语句中,必须使用 default C.break 语句必须与 switch 语句中的 case 配对使用 D.break 语句只能用于 switch 语句(分数:1.00)A.B.C.D.21.以下不构成无限循环的语句或语句组是_。 A.n=0; while1n+; B.n=0;do +n; while(n=0); C.n=10; while(n); n-; D.for(n=0,i=1; ;i+)n+=i;(分数:1.00)A.B.C.D.22.有以下程序#include stdio.hma
10、in() 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);程序运行后的输出结果是_。 A.3 B.5 C.7 D.9(分数:1.00)A.B.C.D.23.有以下程序#include stdio.hint f(int x,int y) return(y-x)*x);main() int a=3,b=4,c=5,d;d=f(f(a,b),f(a,c);printf(“%d/n“,d);程序运行后的输出结果是_。 A.8 B.10 C.9 D.7
11、(分数:1.00)A.B.C.D.24.若有定义语句“double a,*p=”,以下叙述中错误的是_。 A.定义语句中,“*p=”,执行了“px=py=”之后,正确的输入语句是_。 A.scanf(“%lf%le“,px,py); B.scanf(“%f%f“ C.scanf(“%f%f“,x,y); D.scanf(“%lf%lf“,x,y);(分数:1.00)A.B.C.D.26.以下定义数组的语句中错误的是_。 A.int num=(1,2,3,4,5,6; B.int num3=1,2),3,4,5,6; C.int num24=1,2,3,4,5,6; D.int num4=1,2
12、,3,4,5,6;(分数:1.00)A.B.C.D.27.有以下程序#include stdio.hvoid fun(int a,int b) int t;t=a; a=b; b=t;main() int c10=1,2,3,4,5,6,7,8,9,0,i;for(i=0;i10;i+=2) fun(ci,ci+1);for(i=0;i10;i+) printf(“%d,“,ci);printf(“/n“);程序的运行结果是_。 A.1,2,3,4,5,6,7,8,9,0, B.2,1,4,3,6,5,8,7,0,9, C.0,9,8,7,6,5,4,3,2,1, D.0,1,2,3,4,5,
13、6,7,8,9,(分数:1.00)A.B.C.D.28.有以下程序#include stdio.hmain() int x32=0,i;for(i=0;i3;i+) scanf(“%d“,xi);printf(“%3d%3d%3d/n“,x00,x01,x10);若运行时输入:2 4 6回车,则输出结果为_。 A.2 0 0 B.2 0 4 C.2 4 0 D.2 4 6(分数:1.00)A.B.C.D.29.有以下程序段#include stdio.hint j; float y; char name50;scanf(“%2d%f%s“,当执行上述程序段,从键盘上输入 55566 77771
14、23 后,y 的值为_。 A.566.0 B.55566.0 C.7777.0 D.566777.0(分数:1.00)A.B.C.D.30.下列语句组中,正确的是_。 A.char*s;s=“Olympic“; B.char s7;s=“Olympic“; C.char*s;s=“Olympic“; D.char s7;s=“Olympic“;(分数:1.00)A.B.C.D.31.有以下函数int fun(char *s) char *t=s;while(*t+);return(t-s);该函数的功能是_。 A.计算 s 所指字符串占用内存字节的个数 B.比较两个字符串的大小 C.计算 s
15、所指字符串的长度 D.将 s 所指字符串复制到字符串 t 中(分数:1.00)A.B.C.D.32.有以下程序(字符 a 的 ASCII 码值为 97)#include stdio.hmain() char *s=“abc“;do printf(“%d“,*s%10);+s;while(*s);程序运行后的输出结果是_。 A.abc B.789 C.7890 D.979899(分数:1.00)A.B.C.D.33.设有如下函数定义#include stdio.hint fun(int k if(k1) return 0;else if(k=1) return 1;else return fun
16、(k-1)+1;若执行调用语句“n=fun(3);”,则函数 fun 总共被调用的次数是_。 A.3 B.2 C.4 D.5(分数:1.00)A.B.C.D.34.有以下程序#include stdio.hint f(int n);main() int a=3,s;s=f(A);s=s+f(A);printf(“%d/n“,s);int f(int n) static int a=1;n+=a+;return n;程序运行后的输出结果是_。 A.9 B.8 C.7 D.10(分数:1.00)A.B.C.D.35.设有定义:struet complex int real,unreal; data
17、1=1,8,data2;则以下赋值语句中错误的是_。 A.data2.real=data1.unreal; B.data2=data1; C.data2.real=data1.real; D.data2=(2,6);(分数:1.00)A.B.C.D.36.有以下程序#include stdio.hstruct S int n; int a20;);void f(struct S*p) int i,j,t;for(i=0;ip-n-1;i+)for(j=i+1;jp-n;j+)if(p-aip-aj) t=p-ai;p-ai=p-aj;p-aj=t;main() int i; struct S
18、s=10,2,3,1,6,8,7,5,4,10,9;f(for(i=0;is.n;i+) printf(“%d,“,s.ai);程序运行后的输出结果是_。 A.10,9,8,7,6,5,4,3,2,1, B.1,2,3,4,5,6,7,8,9,10, C.2,3,1,6,8,7,5,4,10,9, D.10,9,8,7,6,1,2,3,4,5,(分数:1.00)A.B.C.D.37.有以下程序#include stdio.h#include string.htypedef struct char name9; char sex; int score2; STU;STUf(STU A STU b
19、=“Zhao“,m,85,90;int i;strcpy(a.name,b.name);a.sex=b.sex;for(i=0;i2;i+) a.scorei=b.scorei;return a;main() STU c=“Qian“,f,95,92,d;d=f(c);printf(“%s,%c,%d,%d,“,d.name,d.sex,d.score0,d.score1);printf(“%s,%c,%d,%d/n“,c.name,c.sex,c.score0,c.score1);程序运行后的输出结果是_。 A.Zhao,m,85,90,Qian,f,95,92 B.Zhao,m,85,90
20、,Zhao,m,85,90 C.Qian,f,95,92,Qian,f,95,92 D.Qian,f,95,92,Zhao,m,85,90(分数:1.00)A.B.C.D.38.以下关于宏的叙述中正确的是_。 A.宏替换没有数据类型限制 B.宏定义必须位于源程序中所有语句之前 C.宏名必须用大写字母表示 D.宏调用比函数调用耗费时间(分数:1.00)A.B.C.D.39.设有以下语句int a=1,b=2,c;c=a(b2);执行后,c 的值为_。 A.8 B.7 C.9 D.6(分数:1.00)A.B.C.D.40.有以下程序#include stdio.hmain() FILE *fp;i
21、nt a10=1,2,3,i,n;fp=fopen(“d1.dat“,“w“);for(i=0;i3;i+) fprintf(fp,“%d“,ai);fprintf(fp,“/n“);fclose(fp);fp=fopen(“d1.dat“,“r“);fscanf(fp,“%d,fclose(fp);printf(“%d/n“,n);程序的运行结果是_。 A.123 B.12300 C.1 D.321(分数:1.00)A.B.C.D.二、B程序填空题/B(总题数:1,分数:20.00)41.给定程序中,函数 fun 的功能是:找出 100999 之间(含 100 和 999)所有整数中各位上数
22、字之和为x(x 为一正整数)的整数,然后输出;符合条件的整数个数作为函数值返回。 例如,当 x 值为 5 时,100999 之间各位上数字之和为 5 的整数有:104、113、122、131、140、203、212、221、230、302、311、320、401、410、500。共有 15 个。当 x 值为 27 时,各位数字之和为 27 的整数是 999。只有 1 个。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在下的 BLANK1.C 中。 不得增行或删行,也不得更改程序的结构! 给定源程序: #include stdio.h int fun(
23、int x) int n,s1,s2,s3,t; n=0; t=100; /*found*/ while(tU U /U /U) /*found*/ s1=t%10;s2=U U /U /U%10;s3=t/100; /*found*/ if(s1+s2+s3=U U /U /U) printf(“%d“,t); n+; t+; return n; main() int x=-1; while(x0) printf(“Please input(x0):“); scanf(“%d“, printf(“/nThe result is:%d/n“,fun(x); (分数:20.00)填空项 1:_三
24、、程序改错题(总题数:1,分数:20.00)42.给定程序 MODI1.C 中函数 fun 的功能是:从低位开始取出长整型变量 s 中偶数位上的数,依次构成一个新数放在 t 中。高位仍在高位,低位仍在低位。 例如,当 s 中的数为 7654321 时,t 中的数为 642。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构! 给定源程序: #include stdio.h /*found*/ void fun(long s,long t) long sl=10; s/=10; *t=s%10; /*found*/ while(s0
25、) s=s/100; *t=s%10*sl+*t; sl=sl*10; main() long s,t; printf(“/nPlease enter s:“);scanf(“%ld“, fun(s, printf(“The result is:%ld/n“,t); (分数:20.00)_四、程序设计题(总题数:1,分数:20.00)43.学生的记录由学号和成绩组成,N 名学生的数据已在主函数中放入结构体数组 s 中,请编写函数 fun,它的功能是:按分数的高低排列学生的记录,高分在前。 注意:部分源程序存在文件 PROG1.C 中。 请勿改动主函数 main 和其他函数中的任何内容,仅在函数
26、 fun 的花括号中填入你编写的若干语句。 给定源程序: #include stdio.h #define N 16 typedef struct char num10; int s; STREC; void fun(STREC a) STREC tmp; inti,j; for(i=0;iN;i+) for(j=i+1;jN;j+) /*请按题目要求完成以下代码*/ main() STREC sN=“GA005“,85,“GA003“,76), “GA002“,69,“GA004“,85,“GA001“,91, “GA007“,72,“GA008“,64,“GA006“,87, “GA015
27、“,85,“GA013“,91,GA012“,64, “GA014“,91,“GA011“,66,“GA017“,64, “GA018“,64,“GA016“,72; int i;FILE *out; fun(s); printf(“The data after sorted:/n“); for(i=0;iN;i+) if(i)%4=0)printf(“/n“); printf(“%s%4d“,si.num,si.s); printf(“/n“); out=fopen(“c:/test/out.dat“,“w“); for(i=0;iN;i+) if(i)%4=0 fprintf(out,“%
28、4d“,si.s); fprintf(out,“/n“); fclose(out); (分数:20.00)_二级 C 语言-72 答案解析(总分:100.00,做题时间:90 分钟)一、B选择题/B(总题数:40,分数:40.00)1.一个栈的初始状态为空。现将元素 1、2、3、4、5、A、B、C、D、E 依次入栈,然后再依次出栈,则元素出栈的顺序是_。 A.12345ABCDE B.EDCBA54321 C.ABCDE12345 D.54321EDCBA(分数:1.00)A.B. C.D.解析:解析 栈按后进先出的原则组织数据,因此入栈最晚的最先出栈,因此本题答案为 B。2.下列叙述中正确的
29、是_。 A.循环队列有队头和队尾两个指针,因此,循环队列是非线性结构 B.在循环队列中,只需要队头指针就能反映队列中元素的动态变化情况 C.在循环队列中,只需要队尾指针就能反映队列中元素的动态变化情况 D.循环队列中元素的个数由队头指针和队尾指针共同决定(分数:1.00)A.B.C.D. 解析:解析 循环队列有队头和队尾两个指针,但是循环队列仍是线性结构,因此 A 错误;在循环队列中需要队头与队尾两个指针来共同反映队列中元素的动态变化情况,因此 B 与 C 错误,故本题答案为 D。3.在长度为 n 的有序线性表中进行二分法查找,最坏情况下需要比较的次数是_。 A.O(n) B.O(n2) C.
30、O(log2n) D.O(nlog2n)(分数:1.00)A.B.C. D.解析:解析 当有序线性表为顺序存储时才能用二分法查找。可以证明的是,对于长度为 n 的有序线性表,在最坏情况下,二分法查找只需要比较 log2n 次,而顺序查找需要比较 n 次,因此本题答案为 C。4.下列叙述中正确的是_。 A.顺序存储结构的存储空间一定是连续的,链式存储结构的存储空间不一定是连续的 B.顺序存储结构只针对线性结构,链式存储结构只针对非线性结构 C.顺序存储结构能存储有序表,链式存储结构不能存储有序表 D.链式存储结构比顺序存储结构节省存储空间(分数:1.00)A. B.C.D.解析:解析 链式存储结
31、构既可以针对线性结构也可以针对非线性结构,因此 B 与 C 错误。链式存储结构中每个结点都由数据域与指针域两部分组成,增加了存储空间,因此 D 错误。本题答案为 A。5.数据流图中带有箭头的线段表示的是_。 A.控制流 B.事件驱动 C.模块调用 D.数据流(分数:1.00)A.B.C.D. 解析:解析 数据流图中带箭头的线段表示的是数据流,即沿箭头方向传送数据的通道,一般在旁边标注数据流的名称,因此本题答案为 D。6.在软件开发中,需求分析阶段可以使用的工具是_。 A.N-S 图 B.DFD 图 C.PAD 图 D.程序流程图(分数:1.00)A.B. C.D.解析:解析 在需求分析阶段可以
32、使用的工具有数据流图(DFD 图),数据字典(DD),判定树与判定表,因此本题答案为 B。7.在面向对象方法中,不属于“对象”基本特点的是_。 A.一致性 B.分类性 C.多态性 D.标识唯一性(分数:1.00)A. B.C.D.解析:解析 在面向对象方法中,对象的基本特点包括:标识唯一性、分类性、多态性、封装性、模块独立性好。一致性不属于对象的基本特点,因此本题答案为 A。8.一间宿舍可住多名学生,则实体宿舍和学生之间的联系是_。 A.一对一 B.一对多 C.多对一 D.多对多(分数:1.00)A.B. C.D.解析:解析 因为一间宿舍可以住多名学生即多名学生住在一间宿舍中,但一名学生只能住
33、一间宿舍,所以实体宿舍和学生之间是一对多的关系,因此本题答案为 B。9.在数据管理技术发展的三个阶段中,数据共享最好的是_。 A.人工管理阶段 B.文件系统阶段 C.数据库系统阶段 D.三个阶段相同(分数:1.00)A.B.C. D.解析:解析 数据管理技术发展至今经历了三个阶段:人工管理阶段、文件系统阶段和数据库系统阶段。其中最后一个阶段结构简单,逻辑性强物理性少,使用方便,在各方面的表现都最好,一直占据数据库领域的主导地位,因此本题答案为 C。10.有三个关系 R、S 和 T 如下: RA Bm 1n 2SB C1 33 5TA B Cm 1 3由关系 R 和 S 通过运算得到关系 T,则
34、所使用的运算为_。 A.笛卡儿积 B.交 C.并 D.自然连接(分数:1.00)A.B.C.D. 解析:解析 自然连接是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉,因此根据关系中 T 的有序组可知关系 R 与 S 进行的是自然连接操作,故本题答案为 D。11.以下叙述中错误的是_。 A.使用三种基本结构构成的程序只能解决简单问题 B.结构化程序由顺序、分支、循环三种基本结构组成 C.C 语言是一种结构化程序设计语言 D.结构化程序设计提倡模块化的设计方法(分数:1.00)A. B.C.D.解析:解析 使用顺序、选择(分支)、循环 3 种
35、基本结构构成的程序可以解决所有问题,而不只是解决简单问题,因此 A 选项错误。12.以下四个程序中,完全正确的是_。 A.#include stdio.hmain(); /*/programming/*/printf(“programming!/n“); B.#include main() /*programming*/printf(“programming!/n“); C.#include stdio.hmain() /*/*programming*/*/ printf(“programming!/n“); D.include main() /*programming*/printf(“pr
36、ogramming!/n“);(分数:1.00)A.B. C.D.解析:解析 A 选项中,“main()”函数后面不能加分号。C 语言中注释语句的注释方法是:/*注释内容*/或/注释一行,且“/*”和“*/”不能嵌套使用,因此 C 错误。D 选项中预编译命令“include stdio.h”前缺少“#”号。因此选择 B。13.C 源程序中不能表示的数制是_。 A.十进制 B.八进制 C.二进制 D.十六进制(分数:1.00)A.B.C. D.解析:解析 在 C 语言中整型常量可以用十进制、八进制和十六进制等形式表示,但不包括二进制,因此选择 C。14.以下选项中,能用作用户标识符的是_。 A.
37、_0_ B.8_8 C.void D.unsigned(分数:1.00)A. B.C.D.解析:解析 C 语言中标识符由字母、下划线或数字组成,且开头必须是字母或下划线。另外,关键字不能作为标识符。B 选项中以数字 8 开头,所以错误。C 与 D 中用的是关键字 void 与 unsigned,因此错误。故本题答案为 A。15.若有定义语句“int x=10;”,则表达式“x-=x+x”的值为_。 A.10 B.-20 C.0 D.-10(分数:1.00)A.B.C.D. 解析:解析 算术运算符“+”的优先级高于“-=”,且“-=”的结合方向为自右向左,因此表达式“x-=x+x”可以表示成“x
38、=x-(x+x)=10-(10+10)=-10”,所以选择 D。16.有以下程序#include stdio.hmain() int a=1,b=0;printf(“%d,“,b=a+b);printf(“%d/n“,a=2*b);程序运行后的输出结果是_。 A.1,2 B.1,0 C.3,2 D.0,0(分数:1.00)A. B.C.D.解析:解析 首先打印“b=a+b=1+0=1”的值 1,此时已给 b 赋值为 1。然后打印“a=2*b=2*1=2”的值2。因此结果是“1,2”。17.有以下程序#include stdio.hmain() int a1,a2;char c1,c2;scan
39、f(“%d%c%d%c“,printf(“%d,%c,%d,%c“,a1,c1,a2,c2);若想通过键盘输入,使得 a1 的值为 12,a2 的值为 34,c1 的值为字符 a,c2 的值为字符 b,程序输出结果是 12,a,34,b 则正确的输入格式是_(代表空格字符)。 A.12a34bCR B.12a34bCR C.12,a,34,bCR D.12a34bCR(分数:1.00)A.B. C.D.解析:解析 在输入多个数据时,如果格式控制串中没有非格式字符,则认为所有输入的字符均为有效字符。因此应按选项 B 的顺序输入数据。18.若变量已正确定义,在“if(W)printf(“%d/n“
40、,k);”中,以下不可替代 W 的是_。 A.a=b+c B.ch=getchar() C.ab+c D.a+(分数:1.00)A.B.C. D.解析:解析 选项 C 是非法的表达式,C 语言中没有“”运算符。19.有以下程序段#include stdio.hmain()int a,b,c;a=10; b=50; c=30;if(ab)a=b, b=c; c=a;printf(“a=%d b=%d c=%d/n“,a,b,c);程序的输出结果是_。 A.a=10 b=50 c=10 B.a=10 b=50 c=30 C.a=10 b=30 c=10 D.a=50 b=30 c=50(分数:1.
41、00)A. B.C.D.解析:解析 本题中 ab 的条件不满足,因此不执行逗号表达式“a=b,b=c;”的操作,而是执行“c=a”的操作,即 c 的值为 10。故本题答案为 A。20.下列叙述中正确的是_。 A.在 switch 语句中,不一定使用 break 语句 B.在 switch 语句中,必须使用 default C.break 语句必须与 switch 语句中的 case 配对使用 D.break 语句只能用于 switch 语句(分数:1.00)A. B.C.D.解析:解析 default 语句在 switch 语句中可以省略,因此 B 错误;switch 语句中并非每个 case
42、 后都需要使用 break 语句,因此 C 错误;break 语句还可以用于 for 等循环结构中,因此 D 错误。故本题答案为 A。21.以下不构成无限循环的语句或语句组是_。 A.n=0; while1n+; B.n=0;do +n; while(n=0); C.n=10; while(n); n-; D.for(n=0,i=1; ;i+)n+=i;(分数:1.00)A.B. C.D.解析:解析 选项 B 中 do 后面的语句只执行了一次便结束了循环;A 选项中条件 while1永远成立,因此是死循环;C 选项中 n 的值为 10,而循环体为空语句,所以 while(n)永远为真,进入死循
43、环;D 选项中for 语句第二个表达式为空,因此没有判定条件,进入死循环。因此本题答案为 B。22.有以下程序#include stdio.hmain() 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);程序运行后的输出结果是_。 A.3 B.5 C.7 D.9(分数:1.00)A. B.C.D.解析:解析 向 switch 语句块传送参数后,编译器会先寻找匹配的 case 语句块,找到后就执行该语句块,遇到 break 跳出;如果没有匹配的
44、语句块,则执行 default 语句块。case 与 default 没有顺序之分。因此第一次循环 k 的值为 1,执行 c+=k,c 的值为 1,再执行 case 2 后的语句 c+,c 的值为 2,遇到break 语句跳出循环;第二次循环 k 的值为 2,执行 case 2 后面的语句 c+,c 的值为 3,跳出循环。故本题答案为 A。23.有以下程序#include stdio.hint f(int x,int y) return(y-x)*x);main() int a=3,b=4,c=5,d;d=f(f(a,b),f(a,c);printf(“%d/n“,d);程序运行后的输出结果是_。 A.8 B.10 C.9 D.7(分数:1.00)A.B.C. D.解析:解析 调用“f(a,b)”函数返回 3,调用