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

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

1、二级 C 语言笔试 38 及答案解析(总分:86.00,做题时间:90 分钟)一、B选择题/B(总题数:50,分数:50.00)1.算法的空间复杂度是指(分数:1.00)A.算法程序的长度B.算法程序中的指令条数C.执行算法程序所占的存储空间D.算法执行过程中所需要的存储空间2.以下说法中,不正确的是(分数:1.00)A.C 程序中必须有一个 main()函数,从 main()函数的第一条语句开始执行B.非主函数都是在执行主函数时,通过函数调用或嵌套调用而执行C.C 程序中的 main()函数必须放在程序的开始位置D.C 程序中的 main()函数位置可以任意指定3.以下程序的输出结果是 ma

2、in() char ch35;“AAAA”,“BBB”,“CC”; printf(“/”%s“n”,ch1); (分数:1.00)A.“AAAA”B.“BBB”C.“BBBCC”D.“CC”4.若有下面的说明和定义: struct test int m1;Char m2;float m3; union uuchar u15;int u22;ua; myaa; 则 sizeof(struct test)的值是(分数:1.00)A.12B.16C.14D.95.下列哪个面向对象程序设计不同于其他语言的主要特点(分数:1.00)A.继承性B.消息传递C.多态性D.静态联编6.以下程序的输出结果是 i

3、nt x=3; main() int i; for(i=1;ix;i+)incre(); incre() static int x=1; x*=x+1; printf(“%d”,x); (分数:1.00)A.3 3B.2 2C.2 6D.2 57.不合法的 main 函数命令行参数表示形式是(分数:1.00)A.main(int a,char*c)B.main(int arc,char*arC.main(int argc,char *argD.main(int argv,char *argc)8.若有以下程序 #includestdioh void f(int n); main() void

4、f(int n); f(5); void f(int n) printf(“%d/n”,n); 则以下叙述中不正确的是(分数:1.00)A.若只在主函数中对函数 f 进行说明,则只能在主函数中正确调用函数 fB.若在主函数前对函数 f 进行说明,则在主函数和其后的其他的其他函数中都可以正确调用函数 fC.对于以上程序,编译时系统会提示出错信息;提示对 f 函数重复说明D.函数 f 无返回值,所以可用 void 将其类型定义为无值型9.若有定义:int aa8;则以下表达式中不能代表数组元素 aa1的地址是(分数:1.00)A.”语句。因continue 的作用是结束本次循环,即跳过本次循环体中

5、余下尚未执行的语句,接着再一次进行循环的条件判断,所以 i 的值未发生变化,循环条件仍然为真,if 语句也仍然成立,因此循环将无止境地进行下去。26.以下选项中不属于 C 语言的类型的是(分数:1.00)A.signed short intB.unsigned long intC.unsigned intD.long short 解析:解析在选项中很明显选项 A 为无符号短整型,选项 B 为无符号长整型,选项 C 为无符号整型,而选项 D 的类型在 C 语言中不存在。27.以下程序调用 findmax 函数返回数组中的最大值 findmax(int*a,int n) int * p,* s;

6、for(p=a,s=a;p-an;p+) if(_)s=p; return(*s); main() int x5=12,21,13,6,18; printf(“%d/n”,findmax(x,5); 在下划线处应填入的是(分数:1.00)A.psB.*p*s C.aaD.p-ap-s解析:解析在 main()函数中定义了一个具有 5 个元素的 x 数组并赋初值,然后调用 findmax()函数求数组中元素的最大值。调用时把数组元素 x 的首地址,传给了形参指针变量 a,把 5 传给形参 n。在函数findmax()中定义了两种指针变量 p 和 s,其中 s 用来记录最大元素的地址,p 作为循环

7、控制变量,表示每个元素的地址。求最大值的算法是先将第一个元素(用 s 记下它的地址)做为最大值,然后用最大值(*s)与后面的每个元素比较(*p),若后面的元素大,则用 s 记下它的地址,所以下划线应填“*8*p 或“*p*8”。28.数据库是()的集合,它具有统一的结构格式并存放于统一的存储介质,可被各个应用程序所共享(分数:1.00)A.视图B.消息C.数据 D.关系解析:解析数据库是数据的集合,其中的数据是按数据所提供的数据模式存放的,它能构造复杂的数据结构,以建立数据之间的内在联系与复杂的关系。29.下面可以作为 C 语言用户标识符的一组是(分数:1.00)A.void define W

8、ORDB.a3_b3_123 IF C.for -abc caseD.2a D0 sizeof解析:解析在 C 语言中,合法的标识符可以由字母、数字和下划线组成,其中关键字不能作为用户的标识符,且开头的第一个字符必须为字母或下划线。选项 A 中 void 为关键字;选项 C 中 for 和 case 为关键字;选项 D 中 sizeof 为关键字。30.编制一个好的程序,首先要保证它的正确性和可靠性,还应强调良好的编程风格,在书写功能性注释时应考虑(分数:1.00)A.仅为整个程序作注释B.仅为每个模块作注释C.为程序段作注释 D.为每个语句作注释解析:解析功能性注释是嵌在源程序体中的,用以描

9、述其后的语句或程序段是在做什么工作,或者执行了下面的语句会怎么样。所以它描述的是一段程序,是为程序段做注释,而不是每条语句。31.变量 a 已被定义为整型,下列表达式不正确的是(分数:1.00)A.a=A+20B.a-=aC.a=c+d D.a=c+d解析:解析在 C 语言中,字符变量可参与任何整数运算。本题中只有 C 有错,因为 C 选项中 c、d 如果是字符常量,应有单引号,如果是变量,应该提前定义。32.在 16 位 C 编译系统上,若定义 long a;,则能给 a 赋 40000 的正确语句是(分数:1.00)A.a=20000+20000;B.a=4000*10;C.a=30000

10、+10000;D.a=4000L*10L; 解析:解析由于 20000+20000、4000+10 及 30000+10000 都是整型表达式,故运算的结果仍然是整型,表达式运算的结果超出了整型数据的范围,不正确。而 D 是长整型运算,不会超出长整型的范周。33.以下程序的输出结果是 #includestdi0h main() int i=0,a=0; while(i20) for(;) if(i%10)=0)break; elsei-; i+=11;a+=i; printf(“%d/n”,A) ; (分数:1.00)A.21B.32 C.33D.11解析:解析break 语句只能在循环体和

11、switch 语句体内使用。本题程序为在 while 循环中嵌套 for 循环。先看内层 for 循环,该循环的 3 个表达式全部省略,循环条件始终为真,但循环体内的 break 语句为终止循环的条件。首先,由初始条件判断外层循环 while 括号内表达式的值,该值为真,执行本次 while循环,即执行循环体内的 if 语句,判断该表达式后面括号里表达式的值为真,执行 break 语句,跣出内层循环,执行下面的语句,此时 i 和 a 的值均变为 11;回到外层循环,判断表达式“i20”仍为真,执行内层循环语句,此时 if 条件不满足,执行 else 语句,i 的值为 10,继续内层循环,if

12、语句条件满足,执行 break 语句,跳出内层循环,执行下面的语句后,i 和 a 的值分别是 21 和 32。再判断外层循环的条件为假,结束循环。34.若有说明语句:int a,b,c,*d=”构成的。赋值表达式的形式为:变量=表达式;。选项 A 中 a+相当于 a+1,是赋值语句;选项 C 和选项 D 也是赋值语句。只有选项 B 不是,因为选项 B 中“=”符号是等于的意思,并不是赋值运算符。42.以下程序的输出结果是 main() int a=4,b=5,c=0,d; d=!a”,b5的值 6,故 s 的值变为 10。把 s 作为函数值返回并赋值给 x。50.在说明语句:int *f();

13、中,标识符 f 代表的是(分数:1.00)A.一个用于指向整型数据的指针变量B.一个用于指向一维数组的行指针C.一个用于指向函数的指针变量D.一个返回值为指针型的函数名 解析:解析定义指向整型元素的指针变量形式为:int*指针变量名。定义指向整型一维数组的行指针形式为:int(*指针变量名长度,定义指向返回值为整型的函数的指针变量的形式为:int(*函数名)(),定义返回值为指向整型的指针型函数的形式为: int*函数名()。本题定义的是一个返回值为指针型的函数 f()。二、B填空题/B(总题数:18,分数:36.00)51.算法的复杂度主要包括空间复杂度和U 【1】 /U复杂度。(分数:2.

14、00)填空项 1:_ (正确答案:时间)解析:解析算法的复杂度主要指时间复杂度和空间复杂度。52.在线性结构中,队列的操作顺序是先进先出,而栈的操作顺序是U 【2】 /U。(分数:2.00)填空项 1:_ (正确答案:先进后出)解析:解析队列和栈都是线性结构,但是不同之处在于队列的操作顺序是先进先出,而栈的操作顺序是先进后出。53.数据流图的类型有U 【3】 /U和事务型。(分数:2.00)填空项 1:_ (正确答案:变换型)解析:解析典型的数据流图有两种,即变换型和事务型。54.在数据库理论中,数据物理结构的改变,如存储设备的更换、物理存储的更换、存取方式等都不影响数据库的逻辑结构,从而不引

15、起应用程序的变化,称为U 【4】 /U。(分数:2.00)填空项 1:_ (正确答案:物理独立性)解析:解析数据的物理结构改变,不影响数据库的逻辑结构,从而不引起应用程序的变化,这种性质叫做物理独立性。 操作系统55.数据库管理系统是位于用户与U 【5】 /U之间的软件系统。(分数:2.00)填空项 1:_ (正确答案:操作系统)解析:解析数据库管理系统是帮助用户创建和管理数据库的应用程序的集合。因此,数据库管理系统需要操作系统的支持,为用户提供服务。56.若从键盘输入 58,则以下程序的输出结果是U 【6】 /U。 main() int a; scanf(“%d”,”,表明循环体为空。输出语

16、句不在 for 循环体内,所以在循环执行完毕后才输出 s 的值。s、i 的初值分别为 0 和 1,判断循环条件,表达式“13”成立,执行“i+,s+=i”后,i 和 s 的值分别为 2 和 1,继续判断循环条件,表达式“23”成立,执行“i+,s+=i”后,i 和 s 的值分别为 3,再次判断循环条件,表达式“33”不成立,循环结束。62.以下程序的输出结果是U 【12】 /U。 main() char *p=“abodefgh”,*r; long *q; q=(long*)p; q+; r=(char*)q; printf(“%s/n”,r); (分数:2.00)填空项 1:_ (正确答案:

17、efgh)解析:解析本题定义了一个字符型指针变量 p 并通过赋初值让它指向了一个字符串,定义了另一个字符型指针变量 r 和一个长整型指针变量 q。首先通过语句“q=(long*)p;”把 P 的地址值强制转换为长整型地址值并赋值给 q,然后执行“q+;”,地址值增加了 4,执行语句“r=(char*)q;”,把长整型指针变量q 的值再强制转换成字符型地址值并赋给 r,r 的值应为字符串中字符“e”的地址,最后输出,指向的字符中,是“efgh”。63.以下程序的输出结果是U 【13】 /U。 main() char s=“abcdef”; s3=/0; printf(“%s/n”,s); (分数

18、:2.00)填空项 1:_ (正确答案:abc)解析:解析字符串的结束标记/0,当输出一个存放在字符数组中的字符串时,只需输出到/0为止,而不管其后有什么数据。本题给字符数组 s 的元素 s3赋值为/0,故只能输出 3 个字符“abc”。64.以下程序的输出结果是U 【14】 /U。 main() int x=0; sub(语句此时 x=x+k=0+4=4,回退到上一层调用函数sub(&x,4,2)中,执行后面的语句,x=x+k= 4+2=6,再回推到最上一层调用函数 sub(&x,8,1)执行后面的语句,x=x+k=6+1=7,所以最后输出 7。65.设有如下宏定义 #define MYSW

19、AP(z,x,y)z=x;x=Y;Y=z; 以下程序段通过宏调用实现变量 a、b内容的交换,请填空。 float a=5,b=16,c; MYSWAP(U 【15】 /U,a,b) ;(分数:2.00)填空项 1:_ (正确答案:c)解析:解析本题关键在考生是不是了解宏的基本运用,在使用宏的时候明显少了个实参。在定义宏的时候变量 z 是用来做中间变量的,题目中缺的变量就是一个中间变量 c。66.以下程序用来统计文件中字符的个数。请填空。 #include“stadioh” main() FILE *fp;long num=0L; if(fp=fopen(“fnamedat”,“r”)=NULL

20、); printf(“0pen error/n”);exit(0); while(U 【16】 /U) fsetc(fp);num+; printf(“num=%1d/n”,num-1); fclose(fp); (分数:2.00)填空项 1:_ (正确答案:!feof(fP))解析:解析统计文件中字符个数的算法可描述如下:首先判断文件位置指针是否指向了文件尾,如果不是则读出一个字符,同时字符的个数加 1,再判断文件位置指针是否位于文件尾,如此循环,直到文件位置指针位于文件尾为止。本题首先以读文件的方式打开了文件“fname.dar”,如果打开成功则把返回的文件型指针赋值给 fp,然后通过循环

21、求文件中的字符数。首先判断文件位置指针是否位于文件尾,如果不是则循环读取字符,每次字 符数加 1。所以下划处应填循环条件,文件位置指针不是指向文件尾,即“!feof(fp)”。67.以下程序中,select 函数的功能是:在 N 行 M 列的二维数组中,选出一个最大值作为函数值返回,并通过形参传回此最大值所在的行下标。请填空。 #define N 3 #define M 3 select(int aNM,int *n) int i,j,row=1,colum=1; for(i=0;iN;i+) for(j=0;jM;j+) if(aijarowcolum)row=i;colum=j; *n=U

22、 【17】 /U; return(U 【18】 /U); main() int aNM=9,11,23,6,1,15,9,17,20,max,n; max=select(a,&n); printf(“max=%d,line=%d/n”,max,n); (分数:2.00)填空项 1:_ (正确答案:17row)解析:18arowcolum 解析指针变量作为函数参数及二维数组的一个典型算法求最大值及其下标。通过对题意的分析,在 select()函数中,变量 row 的作用是用来记录最大元素的行下标, colum 的作用是用来记录最大元素的列下标。程序中通过一个循环求得数组元素中最大值的行列下标,分

23、别存放在变量 row 和 colum 中,根据题意,应该把行下标赋值给形参指针变量 n 指向的变量,把最大值 arowcolum作为函数值返回。68.mystrlen 函数的功能是计算 str 所指字符串的长度,并作为函数值返回。请填空。 int mystrlen(char *str) int i; for(i=0;U 【19】 /U!=/0;i+); return(U 【20】 /U); (分数:2.00)填空项 1:_ (正确答案:19*(str+i)或 stri)解析:20i 解析求 str 指向的字符串长度的算法是:用一个变量 i 表示字符串中字符的位置,一开始赋值为 0,取出 i 位置的字符,判断是否为“/0”,若不是则 i 的值加 1,如此循环直到取出的字符是“/0”为止,此时 i 的值就是字符串的长度。由此可知,第一个空处应填第 i 位置上的字符*(str+i);第二个空格应该填字符串的长度 i。

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

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

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