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

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

1、二级 C 语言笔试-254 及答案解析(总分:98.00,做题时间:90 分钟)一、选择题(总题数:40,分数:68.00)1.以下描述中,不是线性表顺序存储结构特征的是( )。(分数:2.00)A.可随机访问B.需要连续的存储空间C.不便于插入和删除D.逻辑相邻的数据物理位置上不相邻2.在结构化方法中,用数据流程图(DFD)作为描述工具的软件开发阶段是( )。(分数:2.00)A.逻辑设计B.需求分析C.详细设计D.物理设计3.设有如下关系表: * 则下列操作正确的是( )。(分数:2.00)A.T=R/SB.T=RSC.T=RSD.T=RS4.开发大型软件时,产生困难的根本原因是( )。(

2、分数:2.00)A.大型系统的复杂性B.人员知识不足C.客观世界千变万化D.时间紧、任务重5.下列字符数组初始化语句中,不正确的是( )。(分数:2.00)A.char c=goodmorning;B.char c20=“goodmorning“;C.char c=a,b,c,d;D.char c=“goodmorning“;6.下列描述中,正确的是( )。(分数:2.00)A.线性链表是线性表的链式存储结构B.栈与队列是非线性结构C.双向链表是非线性结构D.只有根结点的二叉树是线性结构7.下列关于 C 语言数据文件的叙述中正确的是( )。(分数:2.00)A.文件由 ASCII 码字符序列组

3、成,C 语言只能读写文本文件B.文件由二进制数据序列组成,C 语言只能读写二进制文件C.文件由记录序列组成,可按数据的存放形式分为二进制文件和文本文件D.文件由数据流形式组成,可按数据的存放形式分为二进制文件和文本文件8.下列方法中,属于白盒法设计测试用例的方法的是( )。(分数:2.00)A.错误推测B.因果图C.基本路径测试D.边界值分析9.阅读下面程序,程序执行后的结果为( )。 #include“stdio.h“ main() char*str=“abcdefghijklnmopq“: while(*str+!=e); printf(“%c/n“,*str); (分数:2.00)A.f

4、B.aC.eD.a10.设有以下说明,则不正确的叙述是( )。 union un int a; chat b: float c; arr;(分数:2.00)A.arr 所占的内存长度等于成员 c 的长度B.arr 的地址和它的各成员的地址都是同一地址C.arr 可以作为函数参数D.不能在定义 art 时对它初始化11.以下是 while 语句的基本形式: while(表达式)语句: 其中“表达式”( )。(分数:1.00)A.必须是逻辑表达式B.必须是关系表达式C.必须是逻辑表达式或关系表达式D.可以是任意合法的表达式12.执行以下程序段后,w 的值为( )。 intw=A,x=14,y=15

5、; w=(x|y)&(wa);(分数:1.00)A.-1B.NULLC.1D.013.以下标识符不是关键字的是( )。(分数:1.00)A.breakB.charC.switchD.return14.以下不正确的定义语句是( )。(分数:1.00)A.double x5=1.0,2.0,3.0,4.0,5.0;B.int y5=0,1,2,3,4,5;C.char c1=1,2,3,4,5;D.char c2=a,b,c;15.下面函数调用语句含有实参的个数为( )。 func(exp1,exp2),(exp3,exp4,exp5);(分数:1.00)A.1B.2C.3D.516.若有以下定义

6、,则对数组元素的正确引用是( )。 int a5,*p=a;(分数:1.00)A.*&a5B.(*a)+2C.*p+4D.(a+2)17.下述语句中,在字符串 sl 和 s2 相等时显示“they are Equal”的是( )。(分数:1.00)A.if(*s1=*s2) puts(“they are Equal“);B.if(!strcmp(s1,s2) puts(“they are Equal“);C.if(s1=s2) Puts(“they are Equal“);D.if(strcmp(s1,s2) puts(“they are Equal”);18.以下关于 C 语言数据类型的叙述

7、中正确的是( )。(分数:1.00)A.C 基本数据类型包括:分为整型、实型、浮点型、字符型四种B.实型常量的表达方式包括十进制形式、十六进制形式、二进制形式、八进制形式、指数形式C.若要处理如“人员信息”等含有不同类型的相关数据,应自定义结构体类型D.若只处理“真”和“假”两种逻辑值,应使用逻辑类型19.关于字符常量,以下叙述正确的是( )。(分数:1.00)A.空格不是一个字符常量B.字符常量能包含大于一个的字符C.单引号中的大写字母和小写字母代表的是相同的字符常量D.所有的字符常量都可以作为整型量来处理20.以下程序的输出结果是( )。 #includestdio.h void prt(

8、int *x,int *y,int *z) printf(“%d,%d,%d/n“,+*x,+*y,*(z+); main() inta=10,b=40,c=20; prt(&a,&b,&c); prt(&a,&b,&c);(分数:1.00)A.11,42,31 12,22,41B.11,41,20 1,42,20C.11,21,40 11,21,21D.11,41,21 12,42,2221.设有如下的程序段: char str=“HelloWorld“; char*ptr; ptr=str; 执行上面的程序段后,*(ptr+10)的值为( )。(分数:2.00)A./0B.0C.不确定的值

9、D.0的地址22.有以下程序: #includestdio.h main() int a=6,b=7,m=I; switch(a%2) case 0:m+;break; case 1:m+; switch(b%2) defaut:m+; case 0:m+;break; printf(“%d/n“,m); 程序运行后的输出结果是( )。(分数:1.00)A.1B.2C.3D.423.有以下程序 #includestdio.h intfun(int a,int b) if(b=0)return a; else return(fun(-a,-b); main() pdntf(“%d/n“,fun(

10、4,2); 程序的运行结果是( )。(分数:2.00)A.1B.2C.3D.424.下列程序的运行结果为( )。 群 includestdio.h void abc(char*str) int a,b,i,j; for(i=0;stri!=/0;i+) if(stri!=:a) strj+=stri; strj=/0; void main() char str=“abcdef“; abc(str); printf(“str=%s“,str); (分数:2.00)A.B.C.D.25.设有定义: Struct complex int real,unreal;data1=1,8,data2; 则以

11、下赋值语句中错误的是( )。(分数:2.00)A.data2=data1.rea1,data1.unrea1;B.data2=(2,6);C.data2.rea1=data1-rea1;D.data2-rea1=data1.unrea1;26.下列选项中,不能作为合法常最的是( )。(分数:2.00)A.1.234e04B.1.234e0.4C.1.234e+4D.1.234e027.设有定义:“long x=123450L;”,则以下能够正确输出变量 x 的是( )。(分数:2.00)A.printf(“x=%d/n“,x);B.printf(“x=%id/a“,x);C.printf(“x

12、=%dL/n”,x);D.printf(“x=%ld/n“,x);28.对序线性表(23,29,34,55,60,70,78)用二分法查找值为 60 的元素时,需要比较次数为( )。(分数:2.00)A.1B.2C.3D.429.以下不合法的用户标识符是( )。(分数:2.00)A.r3_t3B.ElseC.6aD._630.下列关于线性表的叙述中,不正确的是( )。(分数:2.00)A.线性表可以是空表B.线性表是一种线性结构C.线性表的所有结点有且仅有一个前件和后件D.线性表是由 n 个元素组成的一个有限序列31.在三级模式之间引入两层映像,其主要功能之一是( )。(分数:2.00)A.使

13、数据与程序具有较高的独立性B.使系统具有较高的通道能力C.保持数据与程序的一致性D.提高存储空间的利用率32.有以下程序 #includestdio.h void main() int n=2,k=1; while(!(k0|n+); printf(“%d %d/n“,k,n); 程序运行后的输出结果是( )。(分数:2.00)A.0 2B.1 3C.5 7D.1 233.若 a、b、c、d 都是 int 型变量且都已经正确赋初值,则以下不正确的赋值语句是( )。(分数:2.00)A.a+d;B.a+:C.a=b=c=d=100;D.a=(b=3)+(d=5);34.若有定义 int x,y;

14、并已正确给变量赋值,则下列选项中与表达式(x-y)?(x+):(y+)中的条件表达式(x-y)等价的是( )。(分数:1.00)A.(x-y0)B.(x-y0)C.(x-y0|x-y0)D.(x-y=0)35.下列叙述中正确的是( )。(分数:2.00)A.调用 printf()函数时,必须要有输出项B.使用 putchar()函数时,必须在之前包含头文件 stdio.hC.在 C 语言中,整数可以以二进制、八进制或十六进制的形式输出D.调节 getchar()函数读入字符时,可以从键盘上输入字符所对应的 ASCII 码36.有以下程序 #define F(X,Y)(X)*(Y) main()

15、 int a=3,b=4: printf(“%d/n“,F(a+,b+); 程序运行后的输出结果是( )。(分数:2.00)A.12B.15C.16D.2037.已有定义 int a=3;和输出语句 printf(“%8x“,(分数:2.00)A.;以下正确的叙述是( )。A) 整型变量的输出格式符只有%d 一种 B) %x 是格式符的一种,它可以适用于任何一种类犁的数据 C) %x 是格式符的一种,其变量的值按十六进制数输出,但%08x 是错误的 D38.两个或两个以上的模块之间关联的紧密程度称为( )。(分数:2.00)A.耦合度B.内聚度C.复杂度D.连接度39.在 C 语言中,以下说法

16、不正确的是( )。(分数:2.00)A.在 C 程序中,整数和实数都能被准确无误地表示出来B.在 C 程序中,任何一个变量名都代表存储器中的一个位置C.静态变量的生存期与整个程序的运行期相同D.C 语言中,任何变量都必须先声明才能进行引用40.若 x=4,y=5,则 x&y 的结果是( )。(分数:2.00)A.0B.4C.3D.5二、填空题(总题数:15,分数:30.00)41.数据字典是各类数据描述的集合,它通常包括 5 个部分,即数据项、数据结构、数据流、 1 和处理过程。(分数:2.00)填空项 1:_42. 1 的目的是分析数据间内在语义关联,在此基础上建立一个数据的抽象模型。(分数

17、:2.00)填空项 1:_43.下列软件系统结构图的宽度为_。 *(分数:2.00)填空项 1:_44.在两种基本测试方法中, 1 测试的原则之。一是保证所测模块中每一个独立路径至少要执行一次。(分数:2.00)填空项 1:_45.数据结构分为线性结构和非线性结构,带链的队列属于 1。(分数:2.00)填空项 1:_46.若 a=1,b=2,c=3,d=4;则条件表达式 ab?a:cd?c:d 的结果为 1。(分数:2.00)填空项 1:_47.若有定义:int x=1,y=2;float a=3.7,b=2.1;则(x+y)%2+(int)a/(int)b 表达式的值为 1。(分数:2.00

18、)填空项 1:_48.以下程序的运行结果是_。 main() int a=1,b=2,c; if(ab)c=1; else if(a=b)c=0; else c=-1; printf(“%d/n“,c);(分数:2.00)填空项 1:_49.下面程序的运行结果是_。 #includestdio.h main() int a,s,n,m; a=2;s=0;n=1;m=1; while(m=4)n=n*a;s=s+n;+m; printf(“s=%d“,s); (分数:2.00)填空项 1:_50.以下程序的功能是:对输入的一行字符中的数字字符的字面值累加,输出此累加和, 请填空。 #includ

19、estdio.h #includectype.h main() char c; int a,s=0; while(_) if(isdigit(c) a=c-0;s+=a; printf(“S=%d“,s); (分数:2.00)填空项 1:_51.下面程序的输出结果是_。 #includestdio.h main() static chara=“zhao“,b=“juan“; char*ptr1=a,*ptr2=b; int k; for(k=0;k4;k+) if(*(ptr1+k)=*(ptr2+k) printf(“%c“,*(ptr1+k);(分数:2.00)填空项 1:_52.下列函数

20、从字符数组 s中删除和 c 一样的字符,请在下面横线处填空。 void delete(s,c) char s,c; int i,j; for(i=j=0;_;i+) if(si!=c) sj+=si; sj=“/0“;(分数:2.00)填空项 1:_53.下面程序的运行结果是_。 #includestdio.h main() char a80,*p“AbabCDcd“; int i=0,j=0; while(*(p+)!=/0) if(*p=a&*p=z) ai=*p;i+; ai=/0; puts(a); (分数:2.00)填空项 1:_54.有以下程序 #includestdio.h ty

21、pedef struct int num;double s; REC; void funl(REC *x) x-num=23;x-s=88.5; void main() REC a=16,90.0; fun1(&a); printf(“%d/n“,a.num); 程序运行后的输出结果是_。(分数:2.00)填空项 1:_55.下面程序的运行结果是_。 #define P(a)printf(“%d“,a) main() int j,a=1,2,3,4,5,6,7,i=5; for(j=3;j1;j-) switch(j) case 1: case 2:P(ai+);break; case 3:P

22、(a-i); (分数:2.00)填空项 1:_二级 C 语言笔试-254 答案解析(总分:98.00,做题时间:90 分钟)一、选择题(总题数:40,分数:68.00)1.以下描述中,不是线性表顺序存储结构特征的是( )。(分数:2.00)A.可随机访问B.需要连续的存储空间C.不便于插入和删除D.逻辑相邻的数据物理位置上不相邻 解析:解析 线性表的顺序存储是用一片连续的空间来存放数据元素,其特点是逻辑上相邻的元素在物理位置上也相邻。数据元素之间逻辑上的先后关系自动隐含在物理位置的相邻元素之中,因此不需要另外开辟空间来保存元素之间的关系。2.在结构化方法中,用数据流程图(DFD)作为描述工具的

23、软件开发阶段是( )。(分数:2.00)A.逻辑设计B.需求分析 C.详细设计D.物理设计解析:解析 软件开发阶段包括需求分析、总体设计、详细设计、编码和测试五个阶段。其中需求分析阶段常用的工具是数据流图和数据字典。3.设有如下关系表: * 则下列操作正确的是( )。(分数:2.00)A.T=R/SB.T=RSC.T=RS D.T=RS解析:解析 T 就是关系 R 中有的,同时 S 中也有的有序组(4、5、6),即交运算()。4.开发大型软件时,产生困难的根本原因是( )。(分数:2.00)A.大型系统的复杂性 B.人员知识不足C.客观世界千变万化D.时间紧、任务重解析:解析 随着计算机软件规

24、模的扩大,软件本身的复杂性不断增加,研制周期显著变长,正确性难以保证,软件开发费用上涨,生产效率急剧下降,从而出现了人们难以控制软件发展的局面,即所谓的“软件危机”。5.下列字符数组初始化语句中,不正确的是( )。(分数:2.00)A.char c=goodmorning; B.char c20=“goodmorning“;C.char c=a,b,c,d;D.char c=“goodmorning“;解析:解析 本题考查两个概念。用单引号括起来的一个字符常量只能存放一个字符;C 语言中没有字符串变量,只能用字符数组来存储字符串。选项 A)中一个单引号内存放了若干个字符,是错误的;选项 B)和

25、选项 D)中将一个字符串赋值给一个字符数组是允许的。6.下列描述中,正确的是( )。(分数:2.00)A.线性链表是线性表的链式存储结构 B.栈与队列是非线性结构C.双向链表是非线性结构D.只有根结点的二叉树是线性结构解析:解析 根据数据结构中各数据元素之间前后关系的复杂程度,一般将数据结构分为两大类型:线性结构与非线性结构。如果一个非空的数据结构满足下列两个条件:有且只有一个根结点;每个结点最多有一个前件,也最多有一个后件。则称该数据结构为线性结构,又称线性表。所以线性表、栈与队列、线性链表都是线性结构,而二叉树足非线性结构。7.下列关于 C 语言数据文件的叙述中正确的是( )。(分数:2.

26、00)A.文件由 ASCII 码字符序列组成,C 语言只能读写文本文件B.文件由二进制数据序列组成,C 语言只能读写二进制文件C.文件由记录序列组成,可按数据的存放形式分为二进制文件和文本文件D.文件由数据流形式组成,可按数据的存放形式分为二进制文件和文本文件 解析:解析 本题考查的是数据文件的有关概念。文件由数据流的形式组成,可以按数据存放的形式分为二进制文件和文本文件,C 语言既能读写文本文件,又能读写二进制文件。8.下列方法中,属于白盒法设计测试用例的方法的是( )。(分数:2.00)A.错误推测B.因果图C.基本路径测试 D.边界值分析解析:解析 白盒测试方法也称为结构测试或逻辑测试,

27、主要方法有逻辑覆盖测试、基本路径测试等。9.阅读下面程序,程序执行后的结果为( )。 #include“stdio.h“ main() char*str=“abcdefghijklnmopq“: while(*str+!=e); printf(“%c/n“,*str); (分数:2.00)A.f B.aC.eD.a解析:解析 本题考查的是取内容运算符“*”和自加运算符“+”的优先级问题。由于“+”的优先级高于“*”,所以题干中*str+!=e,即*(str+)!=e,当 str 指向字符e时,while 循环的条件不成立,但 str 已经进行了自加指向了字符f,所以*str 输出字符f。10.

28、设有以下说明,则不正确的叙述是( )。 union un int a; chat b: float c; arr;(分数:2.00)A.arr 所占的内存长度等于成员 c 的长度B.arr 的地址和它的各成员的地址都是同一地址C.arr 可以作为函数参数 D.不能在定义 art 时对它初始化解析:解析 本题主要考查联合体的内存使用:联合体所占用的内存空间为最长的成员所占用的空间,int 占 2 个字节,char 占 1 个字节,float 占 4 个字节,所以 arr 所占的内存长度等于成员 c 的长度;arr 的地址和它的各成员的地址都是同一地址;不能直接对 arr 赋值,即不能在定义 ar

29、r 时对它初始化;arr 也不可以作为函数参数。11.以下是 while 语句的基本形式: while(表达式)语句: 其中“表达式”( )。(分数:1.00)A.必须是逻辑表达式B.必须是关系表达式C.必须是逻辑表达式或关系表达式D.可以是任意合法的表达式 解析:解析 本题考查 while 表达式。while(表达式)中的表达式可以为任何合法的表达式,一般情况下为逻辑、条件表达式,需要注意的是,当等号(=)误写为赋值号(=)时不会报错的,但是其值恒为 1。12.执行以下程序段后,w 的值为( )。 intw=A,x=14,y=15; w=(x|y)&(wa);(分数:1.00)A.-1B.N

30、ULLC.1 D.0解析:解析 字符变量 w 的初值为字符A,其 ASCII 码值为 65,字符a的 ASCII 码值为 97,所以关系表达式 wa的值为 1;变量 x=14,变量 y=15,x|y 为或,x、y 均为真,所以 x|y 的结果 1。因而逻辑表达式(x|y)&(wa)的值为 1。13.以下标识符不是关键字的是( )。(分数:1.00)A.breakB.charC.switch D.return解析:解析 此题考查标识符和关键字的概念。需要注意的是 C 语言是区分大小写的,switch 是关键字,但 Switch 不是关键字。14.以下不正确的定义语句是( )。(分数:1.00)A

31、.double x5=1.0,2.0,3.0,4.0,5.0;B.int y5=0,1,2,3,4,5; C.char c1=1,2,3,4,5;D.char c2=a,b,c;解析:解析 本题考查对一维数组的赋值。选项 B)中,y5说明数组中有 5 个元素,但却给它赋了 6 个值,数组溢出所以是错误的。15.下面函数调用语句含有实参的个数为( )。 func(exp1,exp2),(exp3,exp4,exp5);(分数:1.00)A.1B.2 C.3D.5解析:解析 本题考套函数调用时的实参形式。这里有一个逗号运算的考查,(a,b)的运算结果为 b,因而只有一个值,结合 func 的调用形

32、式,可以知道实参的个数只有 2 个。16.若有以下定义,则对数组元素的正确引用是( )。 int a5,*p=a;(分数:1.00)A.*&a5B.(*a)+2C.*p+4D.(a+2) 解析:解析 本题考查通过指针引用数组元素。选项 A)、C)没有这种引用形式:选项 B),(*a)+2 与*a+2 相同,表示第一个元素的值加 2;选项 D),*(a+2)引用数组的第 3 个元素。17.下述语句中,在字符串 sl 和 s2 相等时显示“they are Equal”的是( )。(分数:1.00)A.if(*s1=*s2) puts(“they are Equal“);B.if(!strcmp(

33、s1,s2) puts(“they are Equal“); C.if(s1=s2) Puts(“they are Equal“);D.if(strcmp(s1,s2) puts(“they are Equal”);解析:解析 字符串比较不能用两个等号(=)来进行比较,应使用 stremp(s1,s2)函数来比较。strcmp(s1,s2)函数的功能是:当字符串 s1 和 s2 相等时,返回值为 0,因此,当表达式!strcmp(s1,s2)=1 时,条件成立,执行后面的语句,输出 they are Equa1。18.以下关于 C 语言数据类型的叙述中正确的是( )。(分数:1.00)A.C

34、基本数据类型包括:分为整型、实型、浮点型、字符型四种B.实型常量的表达方式包括十进制形式、十六进制形式、二进制形式、八进制形式、指数形式C.若要处理如“人员信息”等含有不同类型的相关数据,应自定义结构体类型 D.若只处理“真”和“假”两种逻辑值,应使用逻辑类型解析:解析 C 基本数据类型包括:分为整型、实型、枚举型、字符型四种,实型就是浮点型,实型数据只有十进制,没有 2,8,16 进制表达,在 C 语言中没有定义逻辑类型,而是一般用 0 代表假,用非零代表真。19.关于字符常量,以下叙述正确的是( )。(分数:1.00)A.空格不是一个字符常量B.字符常量能包含大于一个的字符C.单引号中的大

35、写字母和小写字母代表的是相同的字符常量D.所有的字符常量都可以作为整型量来处理 解析:解析 本题考查字符常量的 4 个知识点:空格是一个字符常量,而且单引号中的空格不可以省略:字符常量只能包含一个字符:单引号中的大写字母和小写字母代表的是不相同的字符常量:所有的字符常量部作为整型量来处理,在计算机内部,其对应的整数值就是 ASCII 码值。20.以下程序的输出结果是( )。 #includestdio.h void prt(int *x,int *y,int *z) printf(“%d,%d,%d/n“,+*x,+*y,*(z+); main() inta=10,b=40,c=20; prt

36、(&a,&b,&c); prt(&a,&b,&c);(分数:1.00)A.11,42,31 12,22,41B.11,41,20 1,42,20 C.11,21,40 11,21,21D.11,41,21 12,42,22解析:解析 本题考查的是函数参数的传递及自加运算符。主函数中第一次调用函数 prt(&a,&b,&c);,此函数中的输出语句 printf(“%d,%d,%d/n”,+*x,+*y,*(z+);使得 a 和 b 的值均加 1。而*(z+)由于先执行 z+所以 c 的值不变;第二次调用函数 prt(&a,&b,&c);使得 a 和 b 在上一次的基础上再各自加 1(因为形参和实

37、参进行的是地址传递),而 c 的值仍不变。21.设有如下的程序段: char str=“HelloWorld“; char*ptr; ptr=str; 执行上面的程序段后,*(ptr+10)的值为( )。(分数:2.00)A./0 B.0C.不确定的值D.0的地址解析:解析 本题涉及字符数组和指针两个知识点:在 C 语言中,字符数组在存放字符串时会自动在末尾加上/0,所以题中数组 str 有 11 个元素;ptr 指向数组 str 的首地址,ptr+10 是指向 str10,*(ptt+10)是引用 str10的值(即结束符/0)。22.有以下程序: #includestdio.h main(

38、) int a=6,b=7,m=I; switch(a%2) case 0:m+;break; case 1:m+; switch(b%2) defaut:m+; case 0:m+;break; printf(“%d/n“,m); 程序运行后的输出结果是( )。(分数:1.00)A.1B.2 C.3D.4解析:解析 本题考查 switch 语句。因为 a=6,所以 a%2=0,因此第一个 switch 语句,执行 case 0,将 m 加 1,遇到 break 语句跳出 switch 语句,输出 m 值为 2。23.有以下程序 #includestdio.h intfun(int a,int

39、 b) if(b=0)return a; else return(fun(-a,-b); main() pdntf(“%d/n“,fun(4,2); 程序的运行结果是( )。(分数:2.00)A.1B.2 C.3D.4解析:解析 由程序可知,函数 fun(int a,int b)是一个递归函数。所以当主函数中调用 fun(4,2)叶,其执行过程如下:fun(4,2)-fun(3,1)-fun(2,0),其返回值为 2。所以正确答案为选项 B)。24.下列程序的运行结果为( )。 群 includestdio.h void abc(char*str) int a,b,i,j; for(i=0;s

40、tri!=/0;i+) if(stri!=:a) strj+=stri; strj=/0; void main() char str=“abcdef“; abc(str); printf(“str=%s“,str); (分数:2.00)A. B.C.D.解析:解析 本题考查函数调用是的参数传递。通过函数 abc 的执行,将字符串中的字母 a 去掉,保留剩下的,由于是通过指针调用,所以改变字符串的结果。25.设有定义: Struct complex int real,unreal;data1=1,8,data2; 则以下赋值语句中错误的是( )。(分数:2.00)A.data2=data1.re

41、a1,data1.unrea1;B.data2=(2,6); C.data2.rea1=data1-rea1;D.data2-rea1=data1.unrea1;解析:解析 本题主要考查结构体变量的定义与初始化。题目中定义了 complex 类型的结构体变量data1 和 data2,并对 data1 进行了初始化。选项 A)、C)、D)都是正确的,可以用一个结构体变量对另一个结构体变量赋值,用一个结构体变量的成员对另一个结构体变量的成员赋值。26.下列选项中,不能作为合法常最的是( )。(分数:2.00)A.1.234e04B.1.234e0.4 C.1.234e+4D.1.234e0解析:

42、解析 用指数形式表示的实型常量需注意两点:e 或 E 后面的指数必须是整数;指数必须是不超过数据表 0 示范围的正负整数,并且在 e 或 E 前必须有数字。27.设有定义:“long x=123450L;”,则以下能够正确输出变量 x 的是( )。(分数:2.00)A.printf(“x=%d/n“,x);B.printf(“x=%id/a“,x);C.printf(“x=%dL/n”,x);D.printf(“x=%ld/n“,x); 解析:解析 C 语言规定,输出 long 型数值的格式符为%1d。28.对序线性表(23,29,34,55,60,70,78)用二分法查找值为 60 的元素时

43、,需要比较次数为( )。(分数:2.00)A.1B.2C.3 D.4解析:解析 根据二分法查找法需要两次:首先将 60 与表中间的元素 55 进行比较,由于 60 大于55,所以在线性表的后半部分查找。第二次比较的元素是后半部分的中间元素,将 60 与表中间的元素70 进行比较,由于 60 小于 70,所以在线性表的前半部分查找。第三次比较的元素是前半部分的中间元素,即 60,这时两者相等。即查找成功。29.以下不合法的用户标识符是( )。(分数:2.00)A.r3_t3B.ElseC.6a D._6解析:解析 此题考查的是标识符的概念。标识符是由字母、数字或下划线组成的,而且第一个字符必须字

44、母或下划线,且标识符区分大小写。30.下列关于线性表的叙述中,不正确的是( )。(分数:2.00)A.线性表可以是空表B.线性表是一种线性结构C.线性表的所有结点有且仅有一个前件和后件 D.线性表是由 n 个元素组成的一个有限序列解析:解析 线性表是一种线性结构,由 n(n0)个元素组成,所以线性表可以是空表。但是在线性表中,第一个结点没有前件,最后一个结点没有后件,其他结点有且只有一个前件和后件。所以选项 C)是错误的。31.在三级模式之间引入两层映像,其主要功能之一是( )。(分数:2.00)A.使数据与程序具有较高的独立性 B.使系统具有较高的通道能力C.保持数据与程序的一致性D.提高存

45、储空间的利用率解析:解析 数据库管理系统在数据库的三级模式之间提供了两层映像,保证了数据库中数据的较高的逻辑独立性和物理独立性。32.有以下程序 #includestdio.h void main() int n=2,k=1; while(!(k0|n+); printf(“%d %d/n“,k,n); 程序运行后的输出结果是( )。(分数:2.00)A.0 2B.1 3C.5 7D.1 2 解析:解析 在程序中整型变量 n 的初始值等于 2,整型变最 k 的初始值等于 1,在执行 while 语句时,由于表达式 k 的值大于 0 为真,所以不再需要判断 n+是否为真,(k0|n+)表达式的值

46、为真。!(k0|n+)表达式的值为假,所以 while 语句中的条件不满足,循环语句不会执行,变量 n 的值也不会加 1,所在输出变量 k 和 n 的值是 1 和 2。33.若 a、b、c、d 都是 int 型变量且都已经正确赋初值,则以下不正确的赋值语句是( )。(分数:2.00)A.a+d; B.a+:C.a=b=c=d=100;D.a=(b=3)+(d=5);解析:解析 C 语言规定,赋值号的右边可以是一个赋值表达式,因此选项 C)、选项 D)正确;在选项 B)中,a+是一个自加 1 的表达式,a 被重新赋值,因此它是一个合法的赋值表达式;选项 A)中,a+d 是一个算术表达式,虽然最后

47、有一个分号,但这个表达式中没有赋值操作,因此它不是一条赋值语句。34.若有定义 int x,y;并已正确给变量赋值,则下列选项中与表达式(x-y)?(x+):(y+)中的条件表达式(x-y)等价的是( )。(分数:1.00)A.(x-y0)B.(x-y0)C.(x-y0|x-y0) D.(x-y=0)解析:解析 条件表达式的形式如下:“表达式 1?表达式 2;表达式 3”。其含义为当“表达式 1”的值为非零时,求出“表达式 2”的值,此时“表达式 2”的值就是整个条件表达式的值;当“表达式 1”的值为零时,则求“表达式 3”的值,这时“表达式 3”的值就是整个表达式的值。本题条件表达式的执行顺序是先求解表达式“x-y”的值,若其值为非 0(可以是正数,也可以是负数),则再求表达式“x+”的值,其值就是条件表达式的值;若表达式“

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

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

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