【计算机类职业资格】二级C语言-218及答案解析.doc

上传人:priceawful190 文档编号:1325039 上传时间:2019-10-17 格式:DOC 页数:18 大小:77KB
下载 相关 举报
【计算机类职业资格】二级C语言-218及答案解析.doc_第1页
第1页 / 共18页
【计算机类职业资格】二级C语言-218及答案解析.doc_第2页
第2页 / 共18页
【计算机类职业资格】二级C语言-218及答案解析.doc_第3页
第3页 / 共18页
【计算机类职业资格】二级C语言-218及答案解析.doc_第4页
第4页 / 共18页
【计算机类职业资格】二级C语言-218及答案解析.doc_第5页
第5页 / 共18页
点击查看更多>>
资源描述

1、二级 C 语言-218 及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:40,分数:100.00)1.数据结构主要研究的是数据的逻辑结构、数据的运算和_。(分数:2.50)A.数据的方法B.数据的存储结构C.数据的对象D.数据的逻辑存储2.一棵二叉树的前序遍历结果是 ABCEDF,中序遍历结果是 CBAEDF,则其后序遍历的结果是_。(分数:2.50)A.DBACEFB.CBEFDAC.FDAEBCD.DFABEC3.在数据处理中,其处理的最小单位是_。(分数:2.50)A.数据B.数据项C.数据结构D.数据元素4.在数据库系统的内部结构体系中,索引属于_。(分数:2

2、.50)A.模式B.内模式C.外模式D.概念模式5.以下_不属于对象的基本特征。(分数:2.50)A.继承性B.封装性C.分类性D.多态性6.数据库系统的核心是_。(分数:2.50)A.数据模型B.软件开发C.数据库设计D.数据库管理系统7.开发软件所需高成本和产品的低质量之间有着尖锐的矛盾,这种现象称做_。(分数:2.50)A.软件矛盾B.软件危机C.软件耦合D.软件产生8.关系模型允许定义 3 类数据约束,下列不属于数据约束的是_。(分数:2.50)A.实体完整性约束B.参照完整性约束C.属性完整性约束D.用户自定义的完整性约束9.关系表中的每一行记录称为一个_。(分数:2.50)A.字段

3、B.元组C.属性D.关键码10.在数据库管理技术的发展中,数据独立性最高的是_。(分数:2.50)A.人工管理B.文件系统C.数据库系统D.数据模型11.以下叙述错误的是_。(分数:2.50)A.C 语言区分大小写B.C 程序中的一个变量,代表内存中一个相应的存储单元,变量的值可以根据需要随时修改C.整数和实数都能用 C 语言准确无误地表示出来D.在 C 程序中,正整数可以用十进制、八进制和十六进制的形式来表示12.有以下程序段: int i,n; for(i=0;i8;i+) n=rand()%5; switch(n) case 1: case 3:printf(“%d/n“,n);brea

4、k; case 2: case 4:printf(“%d/n“,n);continue; case 0:exit(0); printf(“%d/n“,n); 以下关于程序段执行情况的叙述,正确的是_(分数:2.50)A.for 循环语句固定执行 8 次B.当产生的随机数 n 为 4 时结束循环操作C.当产生的随机数 n 为 1 和 2 时不做任何操作D.当产生的随机数 n 为 0 时结束程序运行13.可在 C 程序中用作用户标识符的一组标识符是_。(分数:2.50)A.void define WORDB.as_b3 _123 IfC.For abc caseD.2c DO SIG14.若变量已

5、正确定义并赋值,则以下符合 C 语言语法的表达式是_。(分数:2.50)A.a=a+7;B.a=7+b+c,a+C.int(12.3%4)D.a=a+7=c+b15.有以下程序段 char ch;int k; ch=“a“;k=12; printf(“%c,%d,“,ch,ch,k); printf(“k=%d/n“,k); 已知字符 a 的 ASCII 十进制代码为 97,则执行上述程序段后输出结果是_。(分数:2.50)A.因变量类型与格式描述符的类型不匹配输出无定值B.输出项与格式描述符个数不符,输出为零值或不定值C.a,97,12k=12D.a,97,k=1216.下列叙述中错误的是_

6、。(分数:2.50)A.计算机不能直接执行用 C 语言编写的源程序B.C 程序经 C 编译程序编译后,生成后缀为.obj 的文件是一个二进制文件C.后缀为.obj 的文件,经连接程序生成后缀为.exe 的文件是一个二进制文件D.后缀为.obj 和.exe 的二进制文件都可以直接运行17.有以下程序 #include stdio.h void main() int a=1,b=0; printf(%d,“,b=(a+)+(a+); printf(“%d/n“,a+b); 程序运行后的输出结果是_。(分数:2.50)A.4,6B.2,5C.3,5D.2,618.若有代数式 (分数:2.50)A.s

7、qrt(abs(nx+ex)B.sqrt(fabs(pow(n,x)+pow(x,e)C.sqrt(fabs(pow(n,x)+exp(x)D.sqrt(fabs(pow(x,n)+exp(x)19.设有定义:int k=0;,下列选项的 4 个表达式中与其他 3 个表达式的值不相同的是_。(分数:2.50)A.k+B.k+=1C.+kD.k+120.有下列程序,其中%u 表示按无符号整数输出。 main() unsigned int x=0xFFFF;/*x 的初值为十六进制数 */ printf(“%u/n“,x); 程序运行后的输出结果是_。(分数:2.50)A.-1B.65535C.3

8、2767D.0xFFFF21.下面程序的运行结果是_。 for(i=3;i7;i+)printf(i%2)?(“*%d/n“):(“#%d/n“),i);(分数:2.50)A.*3#4*5*6B.#3*4#5*6C.#3*4#5#6D.*3#4*5#622.设有语句:if(a=1)b=2;c=3;,以下语句中与之等价的是_。(分数:2.50)A.if(a=1)b=2;c=3;B.if(a!=1); else b=2;c=3;C.if(a=1)c=3;b=2;D.(a=1)?b=2:a=a;c=3;23.运行下列程序时,若输入数据为“321”,则输出结果是_。 main() int num,i,

9、j,k,s; scanf(“%d“, if(num99) s=3; else if(num9) s=2; else s=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); (分数:2.50)A.123B.1,2,3C.321D.3,2,124.有以下程序 #include stdio.h #includestring.h struct A

10、 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; 程序运行后的输出结果是_。(分数:2.50)A.1001,ZhangDa,1098.0B.1002,ZhangDa,1220.0C.1001,WangPeng,1098.0D

11、.1002,WangPeng,1220.025.判断 char 型变量 c1 是否为小写字母的正确表达式为_。(分数:2.50)A.“a“=c1=“z“B.(c1=a)int i=0;,以下不能将一行(不超过 100 个字符)带有空格的字符串正确读入的语句或语句组是_。(分数:2.50)A.gets(s);B.scanf(“%s“,s);C.while(si+=getchar()!=“/n“);si=“/0“;D.do scanf(%c“,while(si+!=“in“);si=“/0“;27.下面 4 个关于 C 语言的结论中错误的是_。(分数:2.50)A.可以用 do.while 语句实

12、现的循环一定可以用 while 语句实现B.可以用 for 语句实现的循环一定可以用 while 语句实现C.可以用 while 语句实现的循环一定可以用 for 语句实现D.do.while 语句与 while 语句的区别仅是关键字“while”出现的位置不同28.若有以下程序段: struct st int n; int *m; int a=2,b=3,c=5; struct st s3=(101, main() struct st *p; p=s; . 则以下表达式中值为 5 的是_。(分数:2.50)A.(p+)-mB.*(p+)-mC.(*p).mD.*(+p)-m29.下列程序的运

13、行结果是_。 #includestdio.h void 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, printf(“%d,“,x); (分数:2.50)A.1,1,1,1,1,B.1,2,3,4,5,C.0,0,0,0,0,D.4,4,4,4,4,30.有以下程序: #include stdio.h int fun(int x,int y) if(x!=y)return(y); else return(

14、x+y)/2); main() int a=4,b=5,c=6; printf(“%d/n“,fun(2*a,fun(b,c); 程序运行后的输出结果是_。(分数:2.50)A.3B.6C.8D.1231.C 语言中规定,程序中各函数之间_。(分数:2.50)A.既允许直接递归调用也允许间接递归调用B.不允许直接递归调用也不允许间接递归调用C.允许直接递归调用不允许间接递归调用D.不允许直接递归调用允许间接递归调用32.以下程序的输出结果是_。 #includestdio.h main() int a33=0,1,2,0,1,2,0,1,2,i,j,s=1; for(i=0;i3;i+) fo

15、r(j=i;j=i;j+) s+=aiajj; printf(“%d/n“,s); (分数:2.50)A.3B.4C.1D.933.有以下程序: #include stdio.h #define X 5+6 main() int a=2,c; c=X*2; printf(“%d“,c); 程序运行后的输出结果是_。(分数:2.50)A.17B.22C.16D.1134.当用“#define F 37.5f”定义后,下列叙述正确的是_。(分数:2.50)A.F 是 float 型数B.F 是 char 型数C.F 无类型D.F 是字符串35.若有定义语句:int a=3,b=2,c=1;,以下选

16、项中错误的赋值表达式是_。(分数:2.50)A.a=(b=4)=3;B.a=b=c+1;C.a=(b=4)+c;D.a=1+(b=c=4);36.以下说法正确的是_。(分数:2.50)A.宏定义是 C 语句,要在行末加分号B.可以使用#undefine 提前结束宏名的使用C.在进行宏定义时,宏定义不能嵌套D.双引号中出现的宏名也要进行替换37.下面程序的输出结果是_。 typedef union long x1; int y4; char z10; M; M t; main() printf(“%d/n“,sizeof(t); (分数:2.50)A.32B.26C.10D.438.以下程序中函

17、数 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( for(i=0;i10;i+)printf(“%d,“,aai); printf(“/n“); 程序运行后的输出结果是_。(分数:2.50)A.1,2,3,4,5,6,7,8,9,10,B.10,9,8,7,6,5,4,3,2,1,C.1,2,3,8,7,6,

18、5,4,9,10,D.1,2,10,9,8,7,6,5,4,3,39.设 x=061,y=016,则 z=x|y 的值是_。(分数:2.50)A.00001111B.11111111C.00111111D.1100000040.函数 rewind(fp)的作用是_。(分数:2.50)A.使 fp 指定的文件的位置指针重新定位到文件的开始位置B.将 fp 指定的文件的位置指针指向文件中所要求的特定位置C.使 fp 指定的文件的位置指针向文件的末尾D.使 fp 指定的文件的位置指针自动移至下一个字符位置二级 C 语言-218 答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:

19、40,分数:100.00)1.数据结构主要研究的是数据的逻辑结构、数据的运算和_。(分数:2.50)A.数据的方法B.数据的存储结构 C.数据的对象D.数据的逻辑存储解析:解析 数据结构是研究数据元素及其之间的相互关系和数据运算的一门学科,它包含 3 个方面的内容,即数据的逻辑结构、存储结构和数据的运算。2.一棵二叉树的前序遍历结果是 ABCEDF,中序遍历结果是 CBAEDF,则其后序遍历的结果是_。(分数:2.50)A.DBACEFB.CBEFDA C.FDAEBCD.DFABEC解析:解析 由于该二叉树的前序遍历结果是 ABCEDF,显然 A 结点为根结点,所以后序遍历时 A 结点是最后

20、遍历的,其后序遍历的结果为 CBEFDA。3.在数据处理中,其处理的最小单位是_。(分数:2.50)A.数据B.数据项 C.数据结构D.数据元素解析:解析 数据元素是由多个数据项组成,数据是能够被计算机识别、存储和加工处理的信息载体,数据处理的最小单位是数据项。4.在数据库系统的内部结构体系中,索引属于_。(分数:2.50)A.模式B.内模式 C.外模式D.概念模式解析:解析 内模式又称物理模式,它给出了数据库物理存储结构与物理存取方法,如数据存储的文件结构、索引、集簇及 hash 等存取方式与存取路径,内模式的物理性主要体现在操作系统及文件级上,它还未深入到设备级上(如磁盘及磁盘操作)。5.

21、以下_不属于对象的基本特征。(分数:2.50)A.继承性 B.封装性C.分类性D.多态性解析:解析 对象具有如下特征: 标识惟一性,指对象是可区分的; 分类性,指可以将具有相同属性和操作的对象抽象成类; 多态性,指同一个操作可以是不同对象的行为; 封装性,从外面看只能看到对象的外部特征,而不知道也无需知道数据的具体结构以及实现操作的算法;模块独立性好,对象是面向对象的软件的基本模块,对象内部各种元素彼此结合得很紧密,内聚性强。6.数据库系统的核心是_。(分数:2.50)A.数据模型B.软件开发C.数据库设计D.数据库管理系统 解析:解析 数据库管理系统 DBMS 是数据库系统的核心。DBMS

22、是负责数据库的建立、使用和维护的软件。DBMS 建立在操作系统之上,实施对数据库的统一管理和控制。用户使用的各种数据库命令以及应用程序的执行,最终都必须通过 DBMS。另外,DBMS 还承担着数据库的安全保护工作,按照 DBA 所规定的要求,保证数据库的完整性和安全性。7.开发软件所需高成本和产品的低质量之间有着尖锐的矛盾,这种现象称做_。(分数:2.50)A.软件矛盾B.软件危机 C.软件耦合D.软件产生解析:解析 随着计算机软件规模的扩大,软件本身的复杂性不断增加,研制周期显著变长,正确性难以保证,软件开发费用上涨,生产效率急剧下降,从而出现了入门难以控制软件发展的局面,即所谓的“软件危机

23、”。8.关系模型允许定义 3 类数据约束,下列不属于数据约束的是_。(分数:2.50)A.实体完整性约束B.参照完整性约束C.属性完整性约束 D.用户自定义的完整性约束解析:解析 关系模型允许 3 类数据约束,它们是: 实体完整性约束 该约束要求关系的主键中属性值不能为空值,这是数据库完整性的最基本要求。 参照完整性约束 该约束是关系之间相关联的基本约束,它不允许关系引用不存在的元组:即在关系中的外键要么是所关联关系中实际存在的元组,要么就为空值。 用户定义的完整性约束 用户定义的完整性就是针对某一具体关系数据库的约束条件,它反映某一具体应用所涉及的数据必须满足的语义要求。9.关系表中的每一行

24、记录称为一个_。(分数:2.50)A.字段B.元组 C.属性D.关键码解析:解析 在关系表中,每一列称为一个属性,对应表中的一个字段;每一行称为一个元组,对应表中的一条记录。10.在数据库管理技术的发展中,数据独立性最高的是_。(分数:2.50)A.人工管理B.文件系统C.数据库系统 D.数据模型解析:解析 在人工管理阶段,数据无法共享,冗余度大,不独立,完全依赖程序;在文件系统阶段,数据共享性差;在数据库系统阶段,共享性好,独立性高。11.以下叙述错误的是_。(分数:2.50)A.C 语言区分大小写B.C 程序中的一个变量,代表内存中一个相应的存储单元,变量的值可以根据需要随时修改C.整数和

25、实数都能用 C 语言准确无误地表示出来 D.在 C 程序中,正整数可以用十进制、八进制和十六进制的形式来表示解析:解析 本题涉及 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“,

26、n);break; case 2: case 4:printf(“%d/n“,n);continue; case 0:exit(0); printf(“%d/n“,n); 以下关于程序段执行情况的叙述,正确的是_(分数:2.50)A.for 循环语句固定执行 8 次B.当产生的随机数 n 为 4 时结束循环操作C.当产生的随机数 n 为 1 和 2 时不做任何操作D.当产生的随机数 n 为 0 时结束程序运行 解析:解析 当产生的随机数 n 为 0 时,执行 case 0:exit(0)这条语句,结束程序的运行。13.可在 C 程序中用作用户标识符的一组标识符是_。(分数:2.50)A.voi

27、d define WORDB.as_b3 _123 If C.For abc caseD.2c DO SIG解析:解析 C 语言规定,标识符是由字母、数字或下划线组成,并且它的第一个字符必须是字母或下划线,关键字不能用作用户标识符。14.若变量已正确定义并赋值,则以下符合 C 语言语法的表达式是_。(分数:2.50)A.a=a+7;B.a=7+b+c,a+ C.int(12.3%4)D.a=a+7=c+b解析:解析 选项 A 是一个 C 语句,不是表达式;选项 B 是利用一个逗号表达式给 a 赋值;选项 C 中的“%”求余运算符要求两个运算对象都必须是整型;选项 D 中,不能用表达式给表达式赋

28、值,但是变量可以给自身赋值,例如:a=a+1。15.有以下程序段 char ch;int k; ch=“a“;k=12; printf(“%c,%d,“,ch,ch,k); printf(“k=%d/n“,k); 已知字符 a 的 ASCII 十进制代码为 97,则执行上述程序段后输出结果是_。(分数:2.50)A.因变量类型与格式描述符的类型不匹配输出无定值B.输出项与格式描述符个数不符,输出为零值或不定值C.a,97,12k=12D.a,97,k=12 解析:解析 在用基本输出函数 printf 时,格式说明与输出项的个数应该相同。如果格式说明的个数少于输出项的个数,多余的输出项不予输出;

29、如果格式说明个数多于输出项个数,则对于多余的格式项输出不定值或 0。16.下列叙述中错误的是_。(分数:2.50)A.计算机不能直接执行用 C 语言编写的源程序B.C 程序经 C 编译程序编译后,生成后缀为.obj 的文件是一个二进制文件C.后缀为.obj 的文件,经连接程序生成后缀为.exe 的文件是一个二进制文件D.后缀为.obj 和.exe 的二进制文件都可以直接运行 解析:解析 C 源程序经过程序编译之后生成一个后缀为“.obj”的二进制文件(称为目标文件),然后由称为“连接程序”的软件包文件与 C 语言提供的各种库函数连接起来生成一个后缀为“.exe”的可运行文件。17.有以下程序

30、#include stdio.h void main() int a=1,b=0; printf(%d,“,b=(a+)+(a+); printf(“%d/n“,a+b); 程序运行后的输出结果是_。(分数:2.50)A.4,6B.2,5 C.3,5D.2,6解析:解析 在主函数中定义了两个整型变量 a 和 b,并把它们的初值分别设置为 1 和 0;在第二条语句中,首先计算 b=a+a,然后 a 自增两次,因此第二句结束时,b=2,a=3,然后第三句,a+b=5。18.若有代数式 (分数:2.50)A.sqrt(abs(nx+ex)B.sqrt(fabs(pow(n,x)+pow(x,e)C.

31、sqrt(fabs(pow(n,x)+exp(x) D.sqrt(fabs(pow(x,n)+exp(x)解析:解析 n 和 e 的 x 幂次方,要分别调用 C 语言的数学库函数 double pow(n,x)和 double exp(x),因为这两个函数的返回值都为 double 型,对两者的和计算绝对值,调用库函数 double fabs(pow(n,x)+exp(x),求出和的绝对值,再调用开平方函数 double sqrt(fabs(pow(n,x)+exp(x),这样计算出的结果就是题干中表达式的值。19.设有定义:int k=0;,下列选项的 4 个表达式中与其他 3 个表达式的值

32、不相同的是_。(分数:2.50)A.k+ B.k+=1C.+kD.k+1解析:解析 因为题中有语句“int k=0;”,所以选项 B、C、D 都是对 k 的值加 1,选项 A 的语句 k+表示先利用 k 的值进行运算,然后 k 的值才加 1。20.有下列程序,其中%u 表示按无符号整数输出。 main() unsigned int x=0xFFFF;/*x 的初值为十六进制数 */ printf(“%u/n“,x); 程序运行后的输出结果是_。(分数:2.50)A.-1B.65535 C.32767D.0xFFFF解析:解析 “%u”格式符表示以十进制形式输出无符号整形变量。本题中无符号整形变

33、量 x=0xFFFF 表示的是十六进制无符号整型变量的最大值 65535,所以最后输出的结果为 65535。21.下面程序的运行结果是_。 for(i=3;i7;i+)printf(i%2)?(“*%d/n“):(“#%d/n“),i);(分数:2.50)A.*3#4*5*6B.#3*4#5*6C.#3*4#5#6D.*3#4*5#6 解析:解析 本题考查 printf 函数的输出格式和条件表达式“?:”的使用。printf 函数输出时“*%d/n”和“#%d/n”中的“#”和“*”都是直接输出。条件表达式的基本格式为:“a?b:c”。它的运算规则为:当 a 为非 0 时,整个表达式的值取 b

34、 的值,当 a 为 0 时,整个表达式取 c 的值。22.设有语句:if(a=1)b=2;c=3;,以下语句中与之等价的是_。(分数:2.50)A.if(a=1)b=2;c=3;B.if(a!=1); else b=2;c=3;C.if(a=1)c=3;b=2;D.(a=1)?b=2:a=a;c=3; 解析:解析 在 C 语言中,用分号表示一条语句的结束,用把几条语句放在一块表示一个语句块,其整体表示一个功能。因而在题目给出的四个选项中,选项 A、B、C 均与题中所给不同,而选项 D 相同。23.运行下列程序时,若输入数据为“321”,则输出结果是_。 main() int num,i,j,k

35、,s; scanf(“%d“, if(num99) s=3; else if(num9) s=2; else s=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); (分数:2.50)A.123 B.1,2,3C.321D.3,2,1解析:解析 本题考查 if-else 语句和 switch 语句。scanf 函数通过键盘读入 num 的

36、值。因为num=32199,所以 s=3,i=3,j=2,k=1。因为 s=3,所以执行 case 3,输出 k,j,i 的值,然后通过break 结束程序。24.有以下程序 #include stdio.h #includestring.h struct A 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; s

37、trcpy(t.b,“WangPeng“);t.c=1220.0;return t; 程序运行后的输出结果是_。(分数:2.50)A.1001,ZhangDa,1098.0B.1002,ZhangDa,1220.0C.1001,WangPeng,1098.0D.1002,WangPeng,1220.0 解析:解析 在主函数中定义结构体 A 的变量 a,并对其赋初值,再调用函数 f(a),在函数 f(a)中对结构体变量 a 的各个成员重新进行了赋值操作,并把其值返回在屏幕上输出。25.判断 char 型变量 c1 是否为小写字母的正确表达式为_。(分数:2.50)A.“a“=c1=“z“B.(c

38、1=a)int i=0;,以下不能将一行(不超过 100 个字符)带有空格的字符串正确读入的语句或语句组是_。(分数:2.50)A.gets(s);B.scanf(“%s“,s); C.while(si+=getchar()!=“/n“);si=“/0“;D.do scanf(%c“,while(si+!=“in“);si=“/0“;解析:解析 本题考查标准输入输出函数和循环语句。gets(s)函数的作用是将输入的字符读入字符串s,直到遇到回车。而 scanf()函数接收字符串时的结束标志为回车或者空格。因此选项 B 不能,选项 C和选项 D 中按字符逐个读入字符串 s 中,直到读入的字符是换

39、行符为止,因此正确。27.下面 4 个关于 C 语言的结论中错误的是_。(分数:2.50)A.可以用 do.while 语句实现的循环一定可以用 while 语句实现B.可以用 for 语句实现的循环一定可以用 while 语句实现C.可以用 while 语句实现的循环一定可以用 for 语句实现D.do.while 语句与 while 语句的区别仅是关键字“while”出现的位置不同 解析:解析 本题考查几个循环语句的关系。do.while 语句、while 语句、for 语句所实现的循环可以相互替代;do.while 语句和 while 语句的区别是 do.while 语句至少执行一次,再

40、判断循环条件,while 语句是先判断条件再执行。28.若有以下程序段: struct st int n; int *m; int a=2,b=3,c=5; struct st s3=(101, main() struct st *p; p=s; . 则以下表达式中值为 5 的是_。(分数:2.50)A.(p+)-mB.*(p+)-mC.(*p).mD.*(+p)-m 解析:解析 本题考查如何通过指针引用数组元素。首先定义了一个结构体,然后定义了一个结构体变量 s3,并赋了初值。在主程序中,定义了一个指向结构体变量 s 的指针 p,要使表达式的值为 5,就应该引用 s1.m 的值,使指针 p

41、指向 s1,+p 可以实现将 p 指针加 1,指向 s1。29.下列程序的运行结果是_。 #includestdio.h void 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, printf(“%d,“,x); (分数:2.50)A.1,1,1,1,1, B.1,2,3,4,5,C.0,0,0,0,0,D.4,4,4,4,4,解析:解析 本题中 sub(int*s,int*y)函数的参数是两个指针型变量,

42、在函数体内将数组 s 的第一个元素赋给 y。主程序内,首先定义了一维数组并赋初值,然后通过 for 循环,5 次调用 sub(a, else return(x+y)/2); main() int a=4,b=5,c=6; printf(“%d/n“,fun(2*a,fun(b,c); 程序运行后的输出结果是_。(分数:2.50)A.3B.6 C.8D.12解析:解析 fun(b,c)即 fun(5,6),5!=6,所以返回 6;fun(2*a,6)即 fun(8,6),8!=6,所以返回 6。31.C 语言中规定,程序中各函数之间_。(分数:2.50)A.既允许直接递归调用也允许间接递归调用

43、B.不允许直接递归调用也不允许间接递归调用C.允许直接递归调用不允许间接递归调用D.不允许直接递归调用允许间接递归调用解析:解析 本题考查函数调用的基本概念。在函数调用时,只要符合函数的使用,程序中的各个函数间既可以直接调用其他函数,也可以递归调用其自身。32.以下程序的输出结果是_。 #includestdio.h main() int a33=0,1,2,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); (分数:2.50)A.3B.4 C.1D.9解析:解析 当外层循环为 i 时,

44、内层循环 j 只能取 j=i,所以 s+=aiajj,其实就是 s+=aiaii,当 i=0 时,s=s+a0a00=s+a00=1,当 i=1 时,s=s+a1a11=s+a11=1+1=2,当 i=2 时,s=s+a2a22=s+a22=2+2=4。33.有以下程序: #include stdio.h #define X 5+6 main() int a=2,c; c=X*2; printf(“%d“,c); 程序运行后的输出结果是_。(分数:2.50)A.17 B.22C.16D.11解析:解析 define 语句仅进行简单替换,因此 c=5+6*2=17。34.当用“#define F

45、 37.5f”定义后,下列叙述正确的是_。(分数:2.50)A.F 是 float 型数B.F 是 char 型数C.F 无类型D.F 是字符串 解析:解析 字符替换定义格式为:#define 标识符(形参表)形参表达式。题中 F 是代表形参表达式的标识符(字符串)。35.若有定义语句:int a=3,b=2,c=1;,以下选项中错误的赋值表达式是_。(分数:2.50)A.a=(b=4)=3; B.a=b=c+1;C.a=(b=4)+c;D.a=1+(b=c=4);解析:解析 这道题目主要考察赋值表达式,对于赋值表达式来说,赋值号“=”的左边一定为变量名,右边为一个 C 语言合法的表达式。36

46、.以下说法正确的是_。(分数:2.50)A.宏定义是 C 语句,要在行末加分号B.可以使用#undefine 提前结束宏名的使用 C.在进行宏定义时,宏定义不能嵌套D.双引号中出现的宏名也要进行替换解析:解析 本题考查宏的使用规则:字符替换格式:#define 标识符字符串,行末不加分号;双引号中出现的宏名不替换:如果提前结束宏名的使用,程序中可以使用#undefine;在进行宏定义时,宏定义能层层置换,能够嵌套。37.下面程序的输出结果是_。 typedef union long x1; int y4; char z10; M; M t; main() printf(“%d/n“,sizeof(t); (分数:2.50)A.32B.26C.10 D.4解析:解析 “联合体”所占用的内存空间为最长的成员所占用的空间。题中联合体的 z10成员是联合体中占空间最长的成员。38.以下程序中函数 sort 的功能是对 a 数组中的数据进行由大到小的排序 void sort(int a,int n) int i,j,t; for(i=0;in-1;i+

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试资料 > 职业资格

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1