1、二级 C 语言真题 2017 年 09 月-(3)及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:40,分数:40.00)1.设某棵树的度为 3,其中度为 3,1,0 的节点个数分别为 3,4,15。则该树中总节点数为_。(分数:1.00)A.22B.30C.35D.不可能有这样的树2.线性表的长度为 n。在最坏情况下,比较次数为 n-1 的算法是_。(分数:1.00)A.寻找最大项B.同时寻找最大项与最小项C.顺序查找D.有序表的插入3.下列叙述中正确的是_。(分数:1.00)A.循环队列是队列的链式存储结构B.能采用顺序存储的必定是线性结构C.所有的线性结构都可以
2、采用顺序存储结构D.具有两个以上指针的链表必定是非线性结构4.设表的长度为 n。在下列结构所对应的算法中,最坏情况下时间复杂度最低的是_。(分数:1.00)A.希尔排序B.有序链表查找C.堆排序D.循环链表中寻找最大项5.下面不属于结构化程序设计原则的是_。(分数:1.00)A.模块化B.自顶向下C.可继承性D.逐步求精6.对软件系统总体结构图,下面描述中错误的是_。(分数:1.00)A.深度等于控制的层数B.扇入是一个模块直接调用的其他模块数C.扇出是一个模块直接调用的其他模块数D.原子模块一定是结构图中位于叶子节点的模块7.软件集成测试不采用_。(分数:1.00)A.一次性组装B.自顶向下
3、增量组装C.自底向上增量组装D.迭代式组装8.将数据库的结构划分成多个层次,是为了提高数据库的物理独立性和_。(分数:1.00)A.规范程度B.操作独立性C.逻辑独立性D.降低数据冗余9.公司的开发人员可以同时参加多个项目的开发,则实体开发人员和实体项目间的联系是_。(分数:1.00)A.一对一B.一对多C.多对一D.多对多10.定义学生选修课程的关系模式如下: SC(S#,Sn,C#,Cn,G)(其属性分别为学号、姓名、课程号、课程名、成绩) 则该关系的主键为_。(分数:1.00)AS#BC#C.S#,C#D.S#,C#,G11.以下叙述中正确的是_。(分数:1.00)A.C 语言源程序即使
4、不编译,也是可以直接运行的B.一个程序要被称为结构化程序,则只能包含循环结构、选择结构、顺序结构C.使用 N-S 流程图只能描述简单的算法D.复杂算法是指不能分解成子任务的算法12.下面说法正确的是_。(分数:1.00)A.使用只包含 3 种基本结构的算法可以求解复杂的问题B.C 语言源程序需要把所有过长的函数保存在单独的源文件中才能通过编译C.有一些特殊的程序语法错误,只有在运行时才能被发现D.一些完成简单任务的 C 语言程序,可以不包含 main()函数13.以下选项中,算术表达式的值与其他 3 个不同的是_。(分数:1.00)A.3/5.B.3./5C.3/5D.3.0/5.014.以下
5、完全正确的一组常量是_。(分数:1.00)A.-12U 12.E0B.01a.12e3C.0.3L 1.2e-1D.0x0 123.15.以下字符常量中,输出后仍是原英文字母的是_。(分数:1.00)A.“/s“B.“/t“C.“/n“D.“/r“16.有以下程序: #includestdio.h #includemath.h main() int s;float n,t,pai; t=1,pai=0,n=1.0,s=1; while(fabs(t)1.0e-6) pai+=t; n+=2;s=-s;t=s/n; printf(“total=%f/n“,pai); 程序所计算的是_。(分数:1
6、.00)A.1-1/2! +1/3! -1/5! +1/7! -B.1+1/3+1/5+1/7+1/9-C.1+1/2+1/3+1/4+1/5-D.1-1/3+1/5-1/7+1/9-17.有如下程序: #includestdio.h main() int a=0,b=1; if(a+ else printf(“F“); a=b+; printf(“a=%d,b=%d/n“,a,b); 程序运行后的输出结果是_。(分数:1.00)A.Fa=1,b=2B.Fa=1,b=1C.Ta=0,b=2D.Ta=0,b=118.以下各选项中的代码段执行后,变量 y 的值不为 1 的是_。(分数:1.00)A
7、.int x=5,y=0;if(5)y=1;B.int x=5,y=0;if(x)y=1;C.int x=10,y=0;if(x=y)y=1;D.int x=5,y=10;if(x=y)y=1;19.设有定义:int m=1,n=2; 则以下 if 语句中,编译时会产生错误信息的是_。(分数:1.00)A.if(mn)m-else n-;B.if(m=n)m+;n+;C.if(m0 else m+;20.有以下程序: #includestdio.h void main() int i,m=0,n=0,k=0; for(i=9;i=11;i+) switch(i/10) case 0:m+;n+
8、;break; case 10:n+;break; default:k+;n+; printf(“%d%d%d/n“,m,n,k); 程序运行后的输出结果是_。(分数:1.00)A.4 5 1B.3 5 4C.1 5 4D.1 3 221.有下列程序: #includestdio.h main() int a=-1,b=2; for(;a+ ) printf(“%d,%d,“,a,b); printf(“%d,%d“,a,b); 程序执行后的输出结果是_。(分数:1.00)A.0,1,1,0,1,0B.0,1,1,0C.0,1,1,1D.0,1,1,1,1,122.有以下程序: #includ
9、estdio.h #define N 4 int fun(int aN) int i,y=0; for(i=0;iN;i+) y+=a1i+aN-1i; for(i=0;iN-1;i+) aii=aii * aii; return y; main() int y,xNN=11,21,13,4, 15,6,17,8, 9,1,11,12, 3,4,15,6; y=fun(x); printf(“%d,%d,%d“,y,xN-3N-3,xN-3N-2); 程序执行后的输出结果是_。(分数:1.00)A.74,36,17B.74,6,17C.82,36,17D.82,6,1723.以下程序拟调用 g
10、etmax 函数,找出 4 个变量中最大的一个,但程序不完整。具体程序如下: #includestdio.h int getmax(int x,int y) return xy x:y; void main() int a,b,c,d,mx; scanf(“%d%d%d%d“, printf(“max=%d/n“,_); 以下选项若填入下划线处,不能实现上述功能的是_。(分数:1.00)A.getmax(getmax(getmax(a,b),c),d)B.getmax(getmax(a,b),getmax(c,d)C.getmax(a,getmax(b,getmax(c,d)D.mx=(get
11、max(a,b),getmax(c,d)24.以下叙述中错误的是_。(分数:1.00)A.在同一源程序文件中,函数名必须唯一B.凡是带有返回值的库函数,都不能通过加分号而作为独立的语句出现C.不同函数中的形式参数可以同名D.返回基本数据类型的库函数的调用,均可以出现在赋值号右边的表达式中25.关于函数返回值,以下说法错误的是_。(分数:1.00)A.函数返回值可以是整个数组B.函数返回值可以是一个数C.函数返回值可以是一个指针D.函数返回值可以是一个函数的入口地址26.有下列程序: #includestdio.h #define N 4 int fun(int aN) int i,y=0; f
12、or(i=0;iN;i+) y+=a0i+aN-1i; for(i=1;iN-1;i+) y+=ai0+aiN-1; return y; main() int y,xNN=1,2,3,4, 2,1,4,3, 3,4,1,2, 4,3,2,1; y=fun(x); printf(“%d“,y); 程序执行后的输出结果是_。(分数:1.00)A.40B.35C.30D.3227.设有如下程序段: (a)int a2=0; (b)int b=0; (c)char C2=“ABC“; (d)char d=“ABC“; 则以下叙述正确的是_。(分数:1.00)A.只有数组 a、b 的定义是合法的B.数组
13、 a、b、c、d 的定义都是合法的C.只有数组 c、d 的定义是合法的D.只有数组 c 的定义是合法的28.有以下程序: #includestdio.h void swap(int *pa,int *pb) int t; t=*pa;*pa=*pb;*pb=t; void fun(int *ds,int n) int i,midx; midx=0; for(i=1;in;i+) if(dsidsmidx)midx=i; swap(ds,ds+midx); void main() int data=37,31,26,17,61,12,i; for(i=0;i5;i+) fun(data+i,6-
14、i); for(i=0;i6;i+) printf(“%3d“,datai); printf(“/n“); 程序的运行结果是_。(分数:1.00)A.61 37 31 26 17 12B.37 31 26 17 61 12C.17 61 12 37 31 26D.12 17 26 31 37 6129.设有定义:int x23;,则以下选项中不能表示数组元素 x01的是_。(分数:1.00)A.*(*x+1)B.*(*(x+1)C.(*x)1D.*(*z=*z+x; main() double a=2.5,b=9.0,*pa,*pb; pa=pb= fun(b-a,pa,pb); printf
15、(“%f/n“,a); 程序运行后的输出结果是_。(分数:1.00)A.8.000000B.9.000000C.1.500000D.10.50000031.使用数组名作为函数的实参时,传递给形参的是_。(分数:1.00)A.数组第一个元素的值B.数组的首地址C.数组中全部元素的值D.数组元素的个数32.有下列程序: #includestdio.h void fun(int a,int n,int flag) int i=0,j,t; for(i=0;in-1;i+) for(j=i+1;jn;j+) if(flag?(aiaj):(aiaj) t=ai;ai=aj;aj=t; main() i
16、nt c10=7,9,10,8,3,5,1,6,2,4,i; fun(c,10,1); fun(c,8,0); for(i=0;i10;i+) printf(“%d,“,ci); 程序执行后的输出结果是_。(分数:1.00)A.8,7,6,5,4,3,2,1,9,10,B.3,4,5,6,7,8,9,10,2,1,C.9,10,1,2,3,4,5,6,7,8,D.10,9,8,7,6,5,4,3,1,2,33.有以下程序: #includestdio.h int a=5; int func(int a) int b=1; static int c=5; a+; b+; +c; return(a
17、*b*c); main() int k,a=4; for(k=0;k3;k+) printf(“%d,“,func(a); 程序执行后的输出结果是_。(分数:1.00)A.72,147,256,B.60,60,60,C.72,98,128,D.60,70,80,34.有以下程序: #includestdio.h main() char b=“abcdefg“,*chp=b; while(*chp) if(ehp-b)%3=0) putchar(*chp); +chp; 程序的运行结果是_。(分数:1.00)A.cfB.defgC.adgD.aceg35.有下列程序: #includestdio
18、.h #includestring.h main() char v410,*p4,*t; int i,j; for(i=0;i4;i+) pi=vi; scanf(“%s“,pi); for(i=0;i3;i+) for(j=i+1;j4;j+) if(strcmp(pi,pj)0) t=pi;pi=pj;pj=t; for(i=0;i4;i+) printf(“%s“,pi); 程序执行时若输入:Welcome you to Beijing回车,则输出结果是_。(分数:1.00)A.Beijing Welcome to youB.Beijing to Welcome youC.Welcome
19、 you to BeijingD.to you Beijing Welcome36.以下涉及字符串数组、字符指针的程序片段,没有编译错误的是_。(分数:1.00)A.char line;line=“=“:B.char *name10,*str;name=“Hello World“;C.char str110,str210=“prog.c“;str1=str2;D.char name10,*str=“Hello World“;37.若要使 int 型变量 a、b、c、d 的值都为 0,以下写法中错误的是_。(分数:1.00)A.auto int a,b,c,d;a=b=c=d=0;B.auto
20、int a=b=c=d=0;C.auto int a=0,b=a,c=b,d=c;D.static int a,b,c,d;38.有如下程序: #includestdio.h main() int a=1,b; b=(a2)%3; printf(“%d,%d“,a,b); 程序运行后的输出结果是_。(分数:1.00)A.1,1B.2,0C.1,0D.2,139.有下列程序: #includestdio.h main() int x=3,y=5,z1,z2; z1=yxy:z2=xyx; printf(“%d,%d/n“,z1,z2); 程序执行后的输出结果是_。(分数:1.00)A.7,7B.
21、5,3C.8,8D.3,540.有下列程序: #includestdio.h #includestring.h typedef struct stu char name9; char gender; int score; STU; STU f(STU a) STU c=“Sun“,“f“,90; strcpy(a.name,c.name); a.gender=c.gender; a.score=c.score; return a; main() STU a=“Zhao“,“m“,85,b=“Qian“,“f“,95; b=f(a); printf(“%s,%c,%d,%s,%c,%d“,a.n
22、ame,a.gender,a.score,b.name,b.gender,b.score); 程序执行后的输出结果是_。(分数:1.00)A.Zhao,m,85,Sun,f,90B.Zhao,m,85,Qian,f,95C.Sun,f,90,Sun,f,90D.Sun,f,90,Qian,f,95二、程序填空题(总题数:1,分数:18.00)41.下列给定程序中,函数 fun 的功能是:求 ss 所指字符串数组中长度最短的字符串所在的行下标,作为函数值返回,并把其串长放在形参 n 所指的变量中。ss 所指字符串数组中共有 M 个字符串,且串长小于N。 请在程序的下划线处填入正确的内容,使程序得
23、出正确的结果。 注意:部分源程序给出如下。 不得增行或删行,也不得更改程序的结构! 试题程序: #includestdio.h #includestring.h #define M 5 #define N 20 int fun(char(*ss)N,int*n) int i,k=0,len=N; /*found*/ for(i=0;i 1;i+) len=strlen(ssi); if(i=0) *n=len; /*found*/ if(len 2*n) *n=len; k=i; /*found*/ return( 3); main() char ssMN=“shanghai“,“guangz
24、hou“,“beijing“,“tianjing“,“chongqing“; int n,k,i; printf(“/nThe original strings are:/n“); for(i=0;iM;i+)puts(ssi); k=fun(ss, printf(“/nThe length of shortest string is:%d/n“,n); printf(“/nThe shortest string is:%s/n“,ssk); (分数:18.00)三、程序修改题(总题数:1,分数:18.00)42.下列给定程序中函数 fun 的功能是:将 tt 所指字符串中的小写字母全部改为对
25、应的大写字母,其他字符不变。 例如,若输入“Ab,cD”,则输出“AB,CD”。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构! 试题程序: #includeconio.h #includestdio.h #ineludestring.h char *fun(char tt) int i; for(i=0;tti;i+) /*found*/ if(tti=“a“)|(tti=“z“) /*found*/ tti+=32; return(tt); main() char tt81; printf(“/nPlease enter
26、a string:“); gets(tt); printf(“/nThe result string is:/n%s“,fun(tt); (分数:18.00)_四、程序设计题(总题数:1,分数:24.00)43.编写函数 fun,其功能是:将所有大于 1 小于整数 m 的非素数存入 xx 所指数组中,非素数的个数通过k 返回。 例如,若输入 17,则应输出:4 6 8 9 10 12 14 15 16。 注意:部分源程序给出如下。 请勿改动主函数 main 和其他函数中的任何内容,仅在函数 fun 的花括号中填入你编写的若干语句。 试题程序: #includestdlib.h #include
27、conio.h #includestdio.h void fun(int m,int *k,int xx) void main() int m,n,zz100; system(“CLS“); printf(“/nPlease enter an integer number between 10 and 100:“); scanf(“%d“, fun(n, printf(“/n/nThere are %d non-prime numbers less than %d:“,m,n); for(n=0;nm;n+) printf(“/n%4d“,zzn); (分数:24.00)_二级 C 语言真题
28、2017 年 09 月-(3)答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:40,分数:40.00)1.设某棵树的度为 3,其中度为 3,1,0 的节点个数分别为 3,4,15。则该树中总节点数为_。(分数:1.00)A.22B.30 C.35D.不可能有这样的树解析:解析 在树结构中,一个节点所拥有的后件个数称为该节点的度,所有节点中最大的度称为树的度,树中的节点数即为树中所有节点的度数之和再加 1。假设本题中度为 2 的节点数为 n,总节点数为m,m=33+14+n2+1,叶子节点数 15=m-(3+4+n),得 n=8,则 m=9+4+82+1=30。故答案为
29、B 选项。2.线性表的长度为 n。在最坏情况下,比较次数为 n-1 的算法是_。(分数:1.00)A.寻找最大项 B.同时寻找最大项与最小项C.顺序查找D.有序表的插入解析:解析 线性表的长度为 n,在最坏情况下,寻找最大项的比较次数为 n-1。故答案为 A 选项。3.下列叙述中正确的是_。(分数:1.00)A.循环队列是队列的链式存储结构B.能采用顺序存储的必定是线性结构C.所有的线性结构都可以采用顺序存储结构 D.具有两个以上指针的链表必定是非线性结构解析:解析 循环队列就是将队列存储空间的最后一个位置绕到第一个位置,形成逻辑上的环状空间,它是队列的顺序存储结构形式。对于满二叉树与完全二叉
30、树也可以按层次进行顺序存储。有两个以上指针的链表,是线性还是非线性,取决于指针域的指向。所有的线性结构都可以采用顺序存储结构。故答案为C 选项。4.设表的长度为 n。在下列结构所对应的算法中,最坏情况下时间复杂度最低的是_。(分数:1.00)A.希尔排序B.有序链表查找C.堆排序D.循环链表中寻找最大项 解析:解析 最坏情况下,希尔排序所需要比较次数为 n 1.5 ,循环链表中寻找最大项需要 n-1 次,有序链表查找需要 n 次,堆排序次数为 nlog 2 n。因此循环链表中寻找最大项复杂度最低。故答案为 D 选项。5.下面不属于结构化程序设计原则的是_。(分数:1.00)A.模块化B.自顶向
31、下C.可继承性 D.逐步求精解析:解析 结构化程序设计方法的原则包括:自顶向下、逐步求精、模块化、限制使用 goto 语句。故答案为 C 选项。6.对软件系统总体结构图,下面描述中错误的是_。(分数:1.00)A.深度等于控制的层数B.扇入是一个模块直接调用的其他模块数 C.扇出是一个模块直接调用的其他模块数D.原子模块一定是结构图中位于叶子节点的模块解析:解析 软件系统总体结构图中,扇入是指调用一个给定模块的模块个数,扇出是指由一个模块直接调用的其他模块数,深度指控制的层数,原子模块指树中位于叶子节点的模块。故答案为 B 选项。7.软件集成测试不采用_。(分数:1.00)A.一次性组装B.自
32、顶向下增量组装C.自底向上增量组装D.迭代式组装 解析:解析 集成测试时将模块组装成程序通常采用两种方式:非增量方式组装和增量方式组装。非增量方式也称为一次性组装方式,是将测试好的每一个软件单元一次组装在一起再进行整体测试;增量方式是将已测试好的模块逐步组装成较大系统,在组装过程中边连接边测试,以发现连接过程中产生的问题。增量方式包括自顶向下、自底向上、自顶向下与自底向上相结合的混合增量方法。故答案为 D 选项。8.将数据库的结构划分成多个层次,是为了提高数据库的物理独立性和_。(分数:1.00)A.规范程度B.操作独立性C.逻辑独立性 D.降低数据冗余解析:解析 数据库系统通常采用三级模式结
33、构并且提供两级映射功能,其中的外模式/模式映射保证了数据库系统具有较高的逻辑独立性,而模式/内模式映射保证了数据库系统具有较高的物理独立性。故答案为 C 选项。9.公司的开发人员可以同时参加多个项目的开发,则实体开发人员和实体项目间的联系是_。(分数:1.00)A.一对一B.一对多C.多对一D.多对多 解析:解析 开发人员可以参加多个项目,而项目开发人员不止一个,那么开发人员和项目之间是多对多关系。故答案为 D 选项。10.定义学生选修课程的关系模式如下: SC(S#,Sn,C#,Cn,G)(其属性分别为学号、姓名、课程号、课程名、成绩) 则该关系的主键为_。(分数:1.00)AS#BC#C.
34、S#,C# D.S#,C#,G解析:解析 本题关系模式 SC(S#,Sn,C#,Cn,G)(其属性分别为学号、姓名、课程号、课程名、成绩),单依靠学号不能标识唯一元组,需要学号、课程号共同来标识唯一元组,因此学号、课程号(S#、C#)为该关系的主键。故答案为 C 选项。11.以下叙述中正确的是_。(分数:1.00)A.C 语言源程序即使不编译,也是可以直接运行的B.一个程序要被称为结构化程序,则只能包含循环结构、选择结构、顺序结构 C.使用 N-S 流程图只能描述简单的算法D.复杂算法是指不能分解成子任务的算法解析:解析 C 语言源程序必须经过编译、链接,生成二进制可执行文件,才可以运行,选项
35、 A 错误;由 3 种基本结构:即循环结构、选择结构、顺序结构构成的程序称为结构化程序,选项 B 正确;使用 N-S流程图可以描述任何算法,选项 C 错误;可以将复杂算法分解成多个子任务来解决,这种程序的设计方法称为模块化设计,选项 D 错误。故本题答案为 B 选项。12.下面说法正确的是_。(分数:1.00)A.使用只包含 3 种基本结构的算法可以求解复杂的问题 B.C 语言源程序需要把所有过长的函数保存在单独的源文件中才能通过编译C.有一些特殊的程序语法错误,只有在运行时才能被发现D.一些完成简单任务的 C 语言程序,可以不包含 main()函数解析:解析 由 3 种基本结构,即循环结构、
36、选择结构、顺序结构构成的算法称为结构化算法,由 3 种基本结构组成的算法可以解决任何复杂的问题,选项 A 正确;C 语言源程序不需要把过长的函数单独保存也可以编译,选项 B 错误;C 语言程序需要经过编译、链接生成二进制文件才可以运行,其中编译阶段可以检查出语法错误,选项 C 错误;每个 C 语言程序无论简单还是复杂,都必须包含 main()函数,选项 D错误。故本题答案为 A 选项。13.以下选项中,算术表达式的值与其他 3 个不同的是_。(分数:1.00)A.3/5.B.3./5C.3/5 D.3.0/5.0解析:解析 C 语言中除法运算有两个运算数,两个整数的除法运算会舍去小数部分,结果
37、为整数。由于 C 语言中浮点数的小数形式必须要有小数点,所以选项 A(5.)、B(3.)和 D(3.0 和 5.0)都是浮点数,选项 A、B 运算时自动将另一个整数转换成浮点数,然后再运算。选项 D 中两个都是浮点数,浮点数的除法运算结果还是浮点数,所以本题中选项 A、B、D 运算结果是浮点数,选项 C 运算结果是整数。故本题答案为 C 选项。14.以下完全正确的一组常量是_。(分数:1.00)A.-12U 12.E0B.01a.12e3C.0.3L 1.2e-1D.0x0 123. 解析:解析 实数的指数形式如下:尾数 E(e)整型指数,其中字母 E 或 e 之前必须要有数字,E 或 e 后
38、面的指数必须是整数;整型常量中 U 表示无符号类型,L 表示长整型,0x 开头表示十六进制形式的整数。选项 A 中,由于 U 表示无符号类型,只能表示正整数,所以-12U 错误;选项 B 中 a 不合法;选项 C 中 L只能修饰整数,所以 0.3L 是错误的;选项 D 中,0x0 表示十六进制形式的整数 0,123.表示实数,省略了小数点后面的 0,正确。故本题答案为 D 选项。15.以下字符常量中,输出后仍是原英文字母的是_。(分数:1.00)A.“/s“ B.“/t“C.“/n“D.“/r“解析:解析 在本题中,选项 B、C、D 都是转义字符常量,其中“/t“表示代表 Tab 键,“/n“
39、表示回车换行,“/r“表示回车符。选项 A 中的“/s“,其中“是转义字符,不显示;“s“可以原样输出。故本题答案为A 选项。16.有以下程序: #includestdio.h #includemath.h main() int s;float n,t,pai; t=1,pai=0,n=1.0,s=1; while(fabs(t)1.0e-6) pai+=t; n+=2;s=-s;t=s/n; printf(“total=%f/n“,pai); 程序所计算的是_。(分数:1.00)A.1-1/2! +1/3! -1/5! +1/7! -B.1+1/3+1/5+1/7+1/9-C.1+1/2+1
40、/3+1/4+1/5-D.1-1/3+1/5-1/7+1/9- 解析:解析 main()函数首先定义整型变量 s,初值为 1,定义 float 类型的 n、t、pai,其中 n 初值1.0,t 初值为 1,pai 初值为 0。while 循环判断 t 的绝对值(fabs()为求 float 类型值的绝对值)是否大于 1.0*10-6,若 t 的绝对值大于 1.0*10-6,那么执行下列语句:pai+=t;n+=2;s=-s;t=s/n;所以每轮循环 pai 累加 s/n(其中 s 是上一轮 s 的相反数,n 是上一轮 n 累加 2 的值)。第一轮循环时,pai 被赋值为 1,s 是正数,所以最
41、终 pai 的计算结果是:1-1/3+1/5-1/7+1/9-故本题答案为 D 选项。17.有如下程序: #includestdio.h main() int a=0,b=1; if(a+ else printf(“F“); a=b+; printf(“a=%d,b=%d/n“,a,b); 程序运行后的输出结果是_。(分数:1.00)A.Fa=1,b=2 B.Fa=1,b=1C.Ta=0,b=2D.Ta=0,b=1解析:解析 main()函数首先定义整型变量 a、b,分别赋初值为 0、1;a+if(5)y=1;B.int x=5,y=0;if(x)y=1;C.int x=10,y=0;if(x
42、=y)y=1; D.int x=5,y=10;if(x=y)y=1;解析:解析 选项 A 的 if 条件表达式 5 的值为真,执行 y=1,y 的值为 1;选项 B 的 if 条件表达式 x 的值为 5,也是真,执行 y=1,y 的值为 1;选项 C 的 if 条件表达式 x=y 是赋值语句,将 y 的值 0 赋给 x,表达式的值为 0,if 语句不执行,y 值为 0;选项 D 的 if 条件表达式 x=y 是赋值语句,将 y 的值 10 赋给x,表达式的值为 10,执行 y=1,y 的值为 1。故本题答案为 C 选项。19.设有定义:int m=1,n=2; 则以下 if 语句中,编译时会产
43、生错误信息的是_。(分数:1.00)A.if(mn)m-else n-; B.if(m=n)m+;n+;C.if(m0 else m+;解析:解析 选项 A 中,if 语句的语句块 m-后面少了分号,不合法,编译会出错,其他选项的语句都是正确的。故本题答案为 A 选项。20.有以下程序: #includestdio.h void main() int i,m=0,n=0,k=0; for(i=9;i=11;i+) switch(i/10) case 0:m+;n+;break; case 10:n+;break; default:k+;n+; printf(“%d%d%d/n“,m,n,k);
44、 程序运行后的输出结果是_。(分数:1.00)A.4 5 1B.3 5 4C.1 5 4D.1 3 2 解析:解析 由程序可知:for 语句的循环体语句是 switch 语句;循环体变量 i 初值为 9,取值分别是i=9、10、11。当 i=9 时,表达式 i/10 为 0,执行 case 0 语句:m+;n+;break;此时 m 的值为 1,n的值为 1;当 i=10 时,表达式 i/10 为 1,执行 default 语句:k+;n+;此时 k 的值为 1,n 的值为 2;当 i=11 时,表达式 i/10 为 1,执行 default 语句:k+;n+;此时 k 的值为 2,n 的值为
45、 3,循环结束,程序输出结果为:1 3 2。故本题答案为 D。21.有下列程序: #includestdio.h main() int a=-1,b=2; for(;a+ ) printf(“%d,%d,“,a,b); printf(“%d,%d“,a,b); 程序执行后的输出结果是_。(分数:1.00)A.0,1,1,0,1,0B.0,1,1,0C.0,1,1,1 D.0,1,1,1,1,1解析:解析 for 循环中,表达式 a+ for(i=0;iN;i+) y+=a1i+aN-1i; for(i=0;iN-1;i+) aii=aii * aii; return y; main() int y,xNN=11,21,13,4, 15,6,17,8, 9,1,11,12, 3,4,15,6; y=fun(x); printf(“%d,%d,%d“,y,xN-3N-3,xN-3N-2); 程序执行后的输出结果是_。(分数:1.00)A.74,36,17 B.74,6,17C.82,36,17D.82,6,17解析:解析 main()函数首先定义一个二维数组 x,它是 N 行 N 列的整型二维数组,然后将数组 x 传给函数 fun()。在函数 fun()中,第一个 for 循环将数组 a
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1