1、(A)二级公共基础知识-2 及答案解析(总分:100.01,做题时间:90 分钟)一、单项选择题(总题数:40,分数:40.00)1.数据结构主要研究的是数据的逻辑结构、数据的运算和_。A数据的方法 B数据的存储结构C数据的对象 D数据的逻辑存储(分数:1.00)A.B.C.D.2.一棵二叉树的前序遍历结果是 ABCEDF,中序遍历结果是 CBAEDF,则其后序遍历的结果是_。ADBACEF BCBEFDACFDAEBC DDFABEC(分数:1.00)A.B.C.D.3.在数据处理中,其处理的最小单位是_。A数据 B数据项C数据结构 D数据元素(分数:1.00)A.B.C.D.4.在数据库系
2、统的内部结构体系中,索引属于_。A模式 B内模式C外模式 D概念模式(分数:1.00)A.B.C.D.5.以下_不属于对象的基本特征。A继承性 B封装性C分类性 D多态性(分数:1.00)A.B.C.D.6.数据库系统的核心是_。A数据模型 B软件开发C数据库设计 D数据库管理系统(分数:1.00)A.B.C.D.7.开发软件所需高成本和产品的低质量之间有着尖锐的矛盾,这种现象称做_。A软件矛盾 B软件危机C软件藕合 D软件产生(分数:1.00)A.B.C.D.8.关系模型允许定义 3 类数据约束,下列不属于数据约束的是_。A实体完整性约束 B参照完整性约束C属性完整性约束 D用户自定义的完整
3、性约束(分数:1.00)A.B.C.D.9.关系表中的每一行记录称为一个_。A字段 B元组C属性 D关键码(分数:1.00)A.B.C.D.10.在数据库管理技术的发展中,数据独立性最高的是_。A人工管理 B文件系统C数据库系统 D数据模型(分数:1.00)A.B.C.D.11.以下叙述错误的是_。AC 语言区分大小写BC 程序中的一个变量,代表内存中一个相应的存储单元,变量的值可以根据需要随时修改C整数和实数都能用 C 语言准确无误地表示出来D在 C 程序中,正整数可以用十进制、八进制和十六进制的形式来表示(分数:1.00)A.B.C.D.12.有以下程序段:int i,n;for(i=0;
4、i8;i+)n=rand()%5;switch(n)case 1:case 3:printf(:%d/n“,n);break;case 2:case 4:printf(“%d/n“,n);continue;case 0:exit(0);printf(“%d/n“,n);以下关于程序段执行情况的叙述,正确的是_Afor 循环语句固定执行 8 次B当产生的随机数 n 为 4 时结束循环操作C当产生的随机数 n 为 1 和 2 时不做任何操作D当产生的随机数 n 为 0 时结束程序运行(分数:1.00)A.B.C.D.13.可在 C 程序中用作用户标识符的一组标识符是_。Avoid define W
5、ORD Bas_b3 _123 IfCFor abc case D2c DO SIG(分数:1.00)A.B.C.D.14.若变量已正确定义并赋值,则以下符合 C 语言语法的表达式是_。Aa=a+7; Ba=7+b+c,a+Cint(12.3%4) Da=a+7=c+b(分数:1.00)A.B.C.D.15.有以下程序段char ch;int k;ch=a;k=12;printf(“%c,%d,“,ch,ch,k);printf(“k=%d/n“,k);已知字符 a 的 ASC十进制代码为 97,则执行上述程序段后输出结果是_。A因变量类型与格式描述符的类型不匹配输出无定值B输出项与格式描述符
6、个数不符,输出为零值或不定值Ca,97,12k=12Da,97,k=12(分数:1.00)A.B.C.D.16.下列叙述中错误的是_。A计算机不能直接执行用 C 语言编写的源程序BC 程序经 C 编译程序编译后,生成后缀为.obj 的文件是一个二进制文件C后缀为.obj 的文件,经连接程序生成后缀为.exe 的文件是一个二进制文件D后缀为.obj 和.exe 的二进制文件都可以直接运行(分数:1.00)A.B.C.D.17.有以下程序#includestdio.hvoid main()int a=1,b=0;printf(“%d,“,b=(a+)+(a+);printf(“%d/n“,a+b)
7、;程序运行后的输出结果是_。A4,6 B2,5 C3,5 D2,6(分数:1.00)A.B.C.D.18.若有代数式 (分数:1.00)A.B.C.D.19.设有定义:int k=0;,下列选项的 4 个表达式中与其他 3 个表达式的值不相同的是_。Ak+ Bk+=1 C+k Dk+1(分数:1.00)A.B.C.D.20.有下列程序,其中%u 表示按无符号整数输出。main()unsigned int x=0xFFFF;/*x 的初值为十六进制数*/printf(“%u/n“,x);程序运行后的输出结果是_。A-1 B65535C32767 D0xFFFF(分数:1.00)A.B.C.D.2
8、1.下面程序的运行结果是_。for(i=3;i7;i+)printf(i%2)?(“*%d/n“):(“#%d/n“),i);A*3#4*5*6B#3*4#5*6C#3*4#5#6D*3#4*5#6(分数:1.00)A.B.C.D.22.设有语句:if(a=1)b=2;c=3;,以下语句中与之等价的是_。Aif(a=1)b=2;c=3; Bif(a!=1);elseb=2;c=3;Cif(a=1)c=3;b=2; D(a=1)?b=2;a=a;c=3;(分数:1.00)A.B.C.D.23.运行下列程序时,若输入数据为“321”,则输出结果是_。main()int num,i,j,k,s;sc
9、anf(“%d“,num);if(num99)s=3;else if(num9)s=2;elses=1;i=num/100;j=(num-i*100)/10;k=(num-i*100-j*10);switch(s)case 3:printf(“%d%d%d/n“,k,j,i);break;case 2:printf(“%d%d/n“,k,j);case 1:printf(“%d/n“,k);A123 B1,2,3 C321 D3,2,1(分数:1.00)A.B.C.D.24.有以下程序#includestdio.h#includestring.hStruct Aint a;char b10;d
10、ouble c;struct A f(struct A t);main()struct A a=1001,“ZhangDa“,1098.0;a=f(a);printf(“%d,%s,%6.1f/n“,a.a,a.b,a.c);struct A f(Struct A t)t.a=1002;strcpy(t.b,“WangPeng“);t.c=1220.0;return t;程序运行后的输出结果是_。A1001,ZhangDa,1098.0 B1002,ZhangDa,1220.0C1001,WangPeng,1098.0 D1002,WangPeng,1220.0(分数:1.00)A.B.C.D
11、.25.判断 char 型变量 c1 是否为小写字母的正确表达式为_。Aa=c1=z B(c1=a)(c1=z)C(a=c1(z=c1) D(c1=a)(c1=z)(分数:1.00)A.B.C.D.26.设有定义:char s10;int i=0;,以下不能将一行(不超过 100 个字符)带有空格的字符串正确读入的语句或语句组是_。Agets(s);Bscanf(“%s“,s);Cwhile(si+=getchar()!=/n);si=/0;Ddoscanf(“%c“,)while(si+!=/n);si=/0;(分数:1.00)A.B.C.D.27.下面 4 个关于 C 语言的结论中错误的是
12、_。A可以用 dowhile 语句实现的循环一定可以用 while 语句实现B可以用 for 语句实现的循环一定可以用 while 语句实现C可以用 while 语句实现的循环一定可以用 for 语句实现Ddowhile 语句与 while 语句的区别仅是关键字“while”出现的位置不同(分数:1.00)A.B.C.D.28.若有以下程序段:struct stint n;int *m;int a=2,b=3,c:5;struct st s3=(101,a,102,c,103,b;main()struct st *p;p=s;则以下表达式中值为 5 的是_。A(p+)-m B*(p+)-m C
13、(*p).m D*(+p)-m(分数:1.00)A.B.C.D.29.下列程序的运行结果是_。#includestdio.hvoid sub(int *s,int *y)static int m=4;*y=s0;m+;void main()int a=1,2,3,4,5,k;int x;printf(“/n“);for(k=0;k=4;k+)sub(a,x);printf(“%d,“,x);A1,1,1,1,1, B1,2,3,4,5,C0,0,0,0,0, D4,4,4,4,4,(分数:1.00)A.B.C.D.30.有以下程序:#includestdio.hint fun(int x,in
14、t y)if(x!=y)return(y);else return(x+y)/2);main()int a=4,b=5,c=6;printf(“%d/n“,fun(2*a,fun(b,c);程序运行后的输出结果是_。A3 B6 C8 D12(分数:1.00)A.B.C.D.31.C 语言中规定,程序中各函数之间_。A既允许直接递归调用也允许间接递归调用B不允许直接递归调用也不允许间接递归调用C允许直接递归调用不允许间接递归调用D不允许直接递归调用允许间接递归调用(分数:1.00)A.B.C.D.32.以下程序的输出结果是_。#includestdio.hmain()int a33=0,1,2,
15、0,1,2,0,1,2,i,j,s=1;for(i=0;i3;i+)for(j=i;j=i;j+)s+=aiajj;printf(“%d/n“,s);A3 B4 C1 D9(分数:1.00)A.B.C.D.33.有以下程序:#includestdio.h#define X 5+6main()int a=2,c;c=X*2;printf(“%d“,c);程序运行后的输出结果是_。A17 B22 C16 D11(分数:1.00)A.B.C.D.34.当用“#define F 37.5f”定义后,下列叙述正确的是_。AF 是 float 型数 BF 是 char 型数CF 无类型 DF 是字符串(分
16、数:1.00)A.B.C.D.35.若有定义语句:int a=3,b=2,c=1;,以下选项中错误的赋值表达式是_。Aa=(b=4)=3; Ba=b=c+1;Ca=(b=4)+c; Da=1+(b=c=4);(分数:1.00)A.B.C.D.36.以下说法正确的是_。A宏定义是 C 语句,要在行末加分号B可以使用#undefine 提前结束宏名的使用C在进行宏定义时,宏定义不能嵌套D双引号中出现的宏名也要进行替换(分数:1.00)A.B.C.D.37.下面程序的输出结果是_。typedef unionlong x1;int y4;char z10;M;M t;main()printf(“%d/
17、n“,sizeof(t);A32 B26 C10 D4(分数:1.00)A.B.C.D.38.以下程序中函数 sort 的功能是对 a 数组中的数据进行由大到小的排序void sort(int a,int n)int i,j,t;for(i=0;in-1;i+)for(j=i+1;jn;j+)if(aiaj)t=ai;ai=aj;aj=t;main()int aa10=1,2,3,4,5,6,7,8,9,10,i;sort(aa3,5);for(i=0;i10;i+)printf(“%d,“,aai);printf(“/n“);程序运行后的输出结果是_。A1,2,3,4,5,6,7,8,9,1
18、0, B10,9,8,7,6,5,4,3,2,1,C1,2,3,8,7,6,5,4,9,10, D1,2,10,9,8,7,6,5,4,3,(分数:1.00)A.B.C.D.39.设 x=061,y=016,则 z=x|y 的值是_。A00001111 B11111111C00111111 D11000000(分数:1.00)A.B.C.D.40.函数 rewind(fp)的作用是_。A使 fp 指定的文件的位置指针重新定位到文件的开始位置B将 fp 指定的文件的位置指针指向文件中所要求的特定位置C使 fp 指定的文件的位置指针向文件的末尾D使 fp 指定的文件的位置指针自动移至下一个字符位置
19、(分数:1.00)A.B.C.D.二、操作题(总题数:0,分数:0.00)三、程序填空题(总题数:1,分数:20.00)函数 fun 的功能是:将形参 a 所指数组中的前半部分元素中的值和后半部分元素中的值对换。形参 n 中存放数组中数据的个数,若 n 为奇数,则中间的元素不动。例如:若 a 所指数组中的数据依次为:1、2、3、4、5、6、7、8、9,则调换后为:6、7、8、9、5、1、2、3、4。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的 BLANK1.C 中。不得增行或删行,也不得更改程序的结构!(分数:20.01)填空项 1:_
20、填空项 1:_填空项 1:_四、程序修改题(总题数:1,分数:20.00)41.给定程序 MODI1.C 中函数 fun 的功能是:把主函数中输入的 3 个数,最大的放在 a 中,最小的放在 c中,中间的放在 b 中。例如,输入的数为:55 12 34,输出结果应当是:a=55.0,b=34.0,c=12.0。请改正程序中的错误,使它能得出正确结果。注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构。(分数:20.00)填空项 1:_五、程序设计题(总题数:1,分数:20.00)42.学生的记录由学号和成绩组成,N 名学生的数据已在主函数中放入结构体数组 s 中,请编写函数
21、fun,它的功能是:把分数最高的学生数据放在 h 所指的数组中,注意:分数最高的学生可能不止一个,函数返回分数最高的学生的人数。注意:部分源程序在文件 PROG1.C 中。请勿改动主函数 main 和其他函数中的任何内容,仅在函数 fun 的花括号中填入你编写的若干语句。(分数:20.00)_(A)二级公共基础知识-2 答案解析(总分:100.01,做题时间:90 分钟)一、单项选择题(总题数:40,分数:40.00)1.数据结构主要研究的是数据的逻辑结构、数据的运算和_。A数据的方法 B数据的存储结构C数据的对象 D数据的逻辑存储(分数:1.00)A.B. C.D.解析:解析 数据结构是研究
22、数据元素及其之间的相互关系和数据运算的一门学科,它包含 3 个方面的内容,即数据的逻辑结构、存储结构和数据的运算。2.一棵二叉树的前序遍历结果是 ABCEDF,中序遍历结果是 CBAEDF,则其后序遍历的结果是_。ADBACEF BCBEFDACFDAEBC DDFABEC(分数:1.00)A.B. C.D.解析:解析 由于该二叉树的前序遍历结果是 ABCEDF,显然 A 结点为根结点,所以后序遍历时 A 结点是最后遍历的,其后序遍历的结果为 CBEFDA。3.在数据处理中,其处理的最小单位是_。A数据 B数据项C数据结构 D数据元素(分数:1.00)A.B. C.D.解析:解析 数据元素是由
23、多个数据项组成,数据是能够被计算机识别、存储和加工处理的信息载体,数据处理的最小单位是数据项。4.在数据库系统的内部结构体系中,索引属于_。A模式 B内模式C外模式 D概念模式(分数:1.00)A.B. C.D.解析:解析 内模式又称物理模式,它给出了数据库物理存储结构与物理存取方法,如数据存储的文件结构、索引、集簇及 hash 等存取方式与存取路径,内模式的物理性主要体现在操作系统及文件级上,它还未深入到设备级上(如磁盘及磁盘操作)。5.以下_不属于对象的基本特征。A继承性 B封装性C分类性 D多态性(分数:1.00)A. B.C.D.解析:解析 对象具有如下特征:标识惟一性。指对象是可区分
24、的。分类性。指可以将具有相同属性和操作的对象抽象成类。多态性。指同一个操作可以是不同对象的行为。封装性。从外面看只能看到对象的外部特征,而不知道也无需知道数据的具体结构以及实现操作的算法。模块独立性好。对象是面向对象的软件的基本模块,对象内部各种元素彼此结合得很紧密,内聚性强。6.数据库系统的核心是_。A数据模型 B软件开发C数据库设计 D数据库管理系统(分数:1.00)A.B.C.D. 解析:解析 数据库管理系统 DBMS 是数据库系统的核心。DBMS 是负责数据库的建立、使用和维护的软件。DBMS 建立在操作系统之上,实施对数据库的统一管理和控制。用户使用的各种数据库命令以及应用程序的执行
25、,最终都必须通过 DBMS。另外,DBMS 还承担着数据库的安全保护工作,按照 DBA 所规定的要求,保证数据库的完整性和安全性。7.开发软件所需高成本和产品的低质量之间有着尖锐的矛盾,这种现象称做_。A软件矛盾 B软件危机C软件藕合 D软件产生(分数:1.00)A.B. C.D.解析:解析 随着计算机软件规模的扩大,软件本身的复杂性不断增加,研制周期显著变长,正确性难以保证,软件开发费用上涨,生产效率急剧下降,从而出现了入们难以控制软件发展的局面,即所谓的“软件危机”。8.关系模型允许定义 3 类数据约束,下列不属于数据约束的是_。A实体完整性约束 B参照完整性约束C属性完整性约束 D用户自
26、定义的完整性约束(分数:1.00)A.B.C. D.解析:解析 关系模型允许 3 类数据约束,它们是:实体完整性约束该约束要求关系的主键中属性值不能为空值,这是数据库完整性的最基本要求。参照完整性约束该约束是关系之间相关联的基本约束,它不允许关系引用不存在的元组:即在关系中的外键要么是所关联关系中实际存在的元组,要么就为空值。用户定义的完整性约束用户定义的完整性就是针对某一具体关系数据库的约束条件,它反映某一具体应用所涉及的数据必须满足的语义要求。9.关系表中的每一行记录称为一个_。A字段 B元组C属性 D关键码(分数:1.00)A.B. C.D.解析:解析 在关系表中,每一列称为一个属性,对
27、应表中的一个字段;每一行称为一个元组,对应表中的一条记录。10.在数据库管理技术的发展中,数据独立性最高的是_。A人工管理 B文件系统C数据库系统 D数据模型(分数:1.00)A.B.C. D.解析:解析 在人工管理阶段,数据无法共享,冗余度大,不独立,完全依赖程序;在文件系统阶段,数据共享性差;在数据库系统阶段,共享性好,独立性高。11.以下叙述错误的是_。AC 语言区分大小写BC 程序中的一个变量,代表内存中一个相应的存储单元,变量的值可以根据需要随时修改C整数和实数都能用 C 语言准确无误地表示出来D在 C 程序中,正整数可以用十进制、八进制和十六进制的形式来表示(分数:1.00)A.B
28、.C. D.解析:解析 本题涉及 C 语言最基本的 3 个概念:C 语言是区分大小写的,q 和 Q 是两个不同的变量;变量的实质就是在内存中占据一定的存储单元,存储单元里存放的是该变量的值,变量的值可以根据需要进行修改;整数在允许的范围内可以准确的表示出来,但不可能表示无限度的实数。正整数可用二进制、十进制、八进制和十六进制表示。12.有以下程序段:int i,n;for(i=0;i8;i+)n=rand()%5;switch(n)case 1:case 3:printf(:%d/n“,n);break;case 2:case 4:printf(“%d/n“,n);continue;case
29、0:exit(0);printf(“%d/n“,n);以下关于程序段执行情况的叙述,正确的是_Afor 循环语句固定执行 8 次B当产生的随机数 n 为 4 时结束循环操作C当产生的随机数 n 为 1 和 2 时不做任何操作D当产生的随机数 n 为 0 时结束程序运行(分数:1.00)A.B.C.D. 解析:解析 当产生的随机数 n 为 0 时,执行 case 0: exit(0)这条语句,结束程序的运行。13.可在 C 程序中用作用户标识符的一组标识符是_。Avoid define WORD Bas_b3 _123 IfCFor abc case D2c DO SIG(分数:1.00)A.B
30、. C.D.解析:解析 C 语言规定,标识符是由字母、数字或下划线组成,并且它的第一个字符必须是字母或下划线,关键字不能用作用户标识符。14.若变量已正确定义并赋值,则以下符合 C 语言语法的表达式是_。Aa=a+7; Ba=7+b+c,a+Cint(12.3%4) Da=a+7=c+b(分数:1.00)A.B. C.D.解析:解析 选项 A 是一个 C 语句,不是表达式;选项 B 是利用一个逗号表达式给 a 赋值;选项 C 中的“%”求余运算符要求两个运算对象都必须是整型;选项 D 中,不能用表达式给表达式赋值,但是变量可以给自身赋值,例如:a=a+1。15.有以下程序段char ch;in
31、t k;ch=a;k=12;printf(“%c,%d,“,ch,ch,k);printf(“k=%d/n“,k);已知字符 a 的 ASC十进制代码为 97,则执行上述程序段后输出结果是_。A因变量类型与格式描述符的类型不匹配输出无定值B输出项与格式描述符个数不符,输出为零值或不定值Ca,97,12k=12Da,97,k=12(分数:1.00)A.B.C.D. 解析:解析 在用基本输出函数 printf 时,格式说明与输出项的个数应该相同。如果格式说明的个数少于输出项的个数,多余的输出项不予输出;如果格式说明个数多于输出项个数,则对于多余的格式项输出不定值或 0。16.下列叙述中错误的是_。
32、A计算机不能直接执行用 C 语言编写的源程序BC 程序经 C 编译程序编译后,生成后缀为.obj 的文件是一个二进制文件C后缀为.obj 的文件,经连接程序生成后缀为.exe 的文件是一个二进制文件D后缀为.obj 和.exe 的二进制文件都可以直接运行(分数:1.00)A.B.C.D. 解析:解析 C 源程序经过程序编译之后生成一个后缀为“.obj”的二进制文件(称为目标文件),然后由称为“连接程序”的软件包文件与 C 语言提供的各种库函数连接起来生成一个后缀为“.exe”的可运行文件。17.有以下程序#includestdio.hvoid main()int a=1,b=0;printf(
33、“%d,“,b=(a+)+(a+);printf(“%d/n“,a+b);程序运行后的输出结果是_。A4,6 B2,5 C3,5 D2,6(分数:1.00)A.B. C.D.解析:解析 在主函数中定义了两个整型变量 a 和 b,并把它们的初值分别设置为 1 和 0;在第二条语句中,首先计算 b=a+a,然后 a 自增两次,因此第二句结束时,b=2,a=3,然后第三句,a+b=5。18.若有代数式 (分数:1.00)A.B.C. D.解析:解析 n 和 e 的 x 幂次方,要分别调用 C 语言的数学库函数 double pow(n,x)和 double exp(x),因为这两个函数的返回值都为
34、double 型,对两者的和计算绝对值,调用库函数 double fabs(pow(n,x)+exp(x),求出和的绝对值,再调用开平方函数 double sqrt(fabs(pow(n,x)+exp(x),这样计算出的结果就是题干中表达式的值。19.设有定义:int k=0;,下列选项的 4 个表达式中与其他 3 个表达式的值不相同的是_。Ak+ Bk+=1 C+k Dk+1(分数:1.00)A. B.C.D.解析:解析 因为题中有语句“int k=0;”,所以选项 B、C、D 都是对 k 的值加 1,选项 A 的语句 k+表示先利用 k 的值进行运算,然后 k 的值才加 1。20.有下列程
35、序,其中%u 表示按无符号整数输出。main()unsigned int x=0xFFFF;/*x 的初值为十六进制数*/printf(“%u/n“,x);程序运行后的输出结果是_。A-1 B65535C32767 D0xFFFF(分数:1.00)A.B. C.D.解析:解析 “%u”格式符表示以十进制形式输出无符号整形变量。本题中无符号整形变量 x=0xFFFF 表示的是十六进制无符号整型变量的最大值 65535,所以最后输出的结果为 65535。21.下面程序的运行结果是_。for(i=3;i7;i+)printf(i%2)?(“*%d/n“):(“#%d/n“),i);A*3#4*5*6
36、B#3*4#5*6C#3*4#5#6D*3#4*5#6(分数:1.00)A.B.C.D. 解析:解析 本题考查 printf 函数的输出格式和条件表达式“?:”的使用。printf 函数输出时“*%d/n”和“#%d/n”中的“#”和“*”都是直接输出。条件表达式的基本格式为:“a?b:c”。它的运算规则为:当 a 为非 0 时,整个表达式的值取 b 的值,当 a 为 0 时,整个表达式取 c 的值。22.设有语句:if(a=1)b=2;c=3;,以下语句中与之等价的是_。Aif(a=1)b=2;c=3; Bif(a!=1);elseb=2;c=3;Cif(a=1)c=3;b=2; D(a=1
37、)?b=2;a=a;c=3;(分数:1.00)A.B.C.D. 解析:解析 在 C 语言中,用分号表示一条语句的结束,用把几条语句放在一块表不一个语句块,其整体表示一个功能。因而在题目给出的四个选项中,选项 A、B、C 均与题中所给不同,而选项 D 相同。23.运行下列程序时,若输入数据为“321”,则输出结果是_。main()int num,i,j,k,s;scanf(“%d“,num);if(num99)s=3;else if(num9)s=2;elses=1;i=num/100;j=(num-i*100)/10;k=(num-i*100-j*10);switch(s)case 3:pri
38、ntf(“%d%d%d/n“,k,j,i);break;case 2:printf(“%d%d/n“,k,j);case 1:printf(“%d/n“,k);A123 B1,2,3 C321 D3,2,1(分数:1.00)A. B.C.D.解析:解析 本题考查 if-else 语句和 switch 语句。scanf 函数通过键盘读入 num 的值。因为num=32199,所以 s=3,i=3,j=2,k=1。因为 s=3,所以执行 case 3,输出 k,j,i 的值,然后通过break 结束程序。24.有以下程序#includestdio.h#includestring.hStruct A
39、int a;char b10;double c;struct A f(struct A t);main()struct A a=1001,“ZhangDa“,1098.0;a=f(a);printf(“%d,%s,%6.1f/n“,a.a,a.b,a.c);struct A f(Struct A t)t.a=1002;strcpy(t.b,“WangPeng“);t.c=1220.0;return t;程序运行后的输出结果是_。A1001,ZhangDa,1098.0 B1002,ZhangDa,1220.0C1001,WangPeng,1098.0 D1002,WangPeng,1220.0
40、(分数:1.00)A.B.C.D. 解析:解析 在主函数中定义结构体 A 的变量 a,并对其赋初值,再调用函数 f(a),在函数 f(a)中对结构体变量 a 的各个成员重新进行了赋值操作,并把其值返回在屏幕上输出。25.判断 char 型变量 c1 是否为小写字母的正确表达式为_。Aa=c1=z B(c1=a)(c1=z)C(a=c1(z=c1) D(c1=a)(c1=z)(分数:1.00)A.B.C.D. 解析:解析 C 语言规定,字符常量在程序中要用单引号括起来。首先判断 c1 是否为小写字母的主要条件 c1=a和 c1=z是逻辑与关系,其次选项 A 的这种形式 C 语言中没有,所以选项
41、D 正确。26.设有定义:char s10;int i=0;,以下不能将一行(不超过 100 个字符)带有空格的字符串正确读入的语句或语句组是_。Agets(s);Bscanf(“%s“,s);Cwhile(si+=getchar()!=/n);si=/0;Ddoscanf(“%c“,)while(si+!=/n);si=/0;(分数:1.00)A.B. C.D.解析:解析 本题考查标准输入输出函数和循环语句。gets(s)函数的作用是将输入的字符读入字符串s,直到遇到回车。而 scanf()函数接收字符串时的结束标志为回车或者空格。因此选项 B 不能,选项 C和选项 D 中按字符逐个读入字符
42、串 s 中,直到读入的字符是换行符为止,因此正确。27.下面 4 个关于 C 语言的结论中错误的是_。A可以用 dowhile 语句实现的循环一定可以用 while 语句实现B可以用 for 语句实现的循环一定可以用 while 语句实现C可以用 while 语句实现的循环一定可以用 for 语句实现Ddowhile 语句与 while 语句的区别仅是关键字“while”出现的位置不同(分数:1.00)A.B.C.D. 解析:解析 本题考查几个循环语句的关系。dowhile 语句、while 语句、for 语句所实现的循环可以相互替代;dowhile 语句和 while 语句的区别是 dowh
43、ile 语句至少执行一次,再判断循环条件,while 语句是先判断条件再执行。28.若有以下程序段:struct stint n;int *m;int a=2,b=3,c:5;struct st s3=(101,a,102,c,103,b;main()struct st *p;p=s;则以下表达式中值为 5 的是_。A(p+)-m B*(p+)-m C(*p).m D*(+p)-m(分数:1.00)A.B.C.D. 解析:解析 本题考查如何通过指针引用数组元素。首先定义了一个结构体,然后定义了一个结构体变量 s3,并赋了初值。在主程序中,定义了一个指向结构体变量 s 的指针 p,要使表达式的值
44、为 5,就应该引用 s1.m 的值,使指针 P 指向 s1,+p 可以实现将 P 指针加 1,指向 s1。29.下列程序的运行结果是_。#includestdio.hvoid sub(int *s,int *y)static int m=4;*y=s0;m+;void main()int a=1,2,3,4,5,k;int x;printf(“/n“);for(k=0;k=4;k+)sub(a,x);printf(“%d,“,x);A1,1,1,1,1, B1,2,3,4,5,C0,0,0,0,0, D4,4,4,4,4,(分数:1.00)A. B.C.D.解析:解析 本题中 sub(int
45、*s,int *y)函数的参数是两个指针型变量,在函数体内将数组 s 的第一个元素赋给 y。主程序内,首先定义了一维数组并赋初值,然后通过 for 循环,5 次调用 sub(a,x)函数,每一次调用都是将数组 a 的第一个元素 1 赋给 x,并输出。30.有以下程序:#includestdio.hint fun(int x,int y)if(x!=y)return(y);else return(x+y)/2);main()int a=4,b=5,c=6;printf(“%d/n“,fun(2*a,fun(b,c);程序运行后的输出结果是_。A3 B6 C8 D12(分数:1.00)A.B. C.D.解析:解析 fun(b,c)即 fun(5,6),5!=6,所以返回 6;fun(2*a,6)即 fun(8,6),8!=6,所以返回 6。31.C 语言中规定,程序中各函数之间_。A既允许直接递归调用也允许间接递归调用B不允许直接递归调用也不允许间接递归调用C允许直接递归调用不允许间接递归调用D不允许直接递归调用允许间接递归调用(分数:1.00)A. B.C.D.解析:解析 本题考查函数调用的基本概念。在函数调用时,只要符合函数的使用,程序中的各个函数间既可以直接调用其他函数,也可以递归调用其自身。32.以下程序的输出结果是_。#