【计算机类职业资格】二级C语言笔试-80及答案解析.doc
《【计算机类职业资格】二级C语言笔试-80及答案解析.doc》由会员分享,可在线阅读,更多相关《【计算机类职业资格】二级C语言笔试-80及答案解析.doc(35页珍藏版)》请在麦多课文档分享上搜索。
1、二级 C 语言笔试-80 及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:50,分数:60.00)1.用树形结构来表示实体之间联系的模型称为( )。(分数:1.00)A.关系模型B.层次模型C.网状模型D.数据模型2.设 x、y、t 均为 int 型变量,则执行语句:x=y=3;t=+x|+y;后,y 的值为( )。(分数:1.00)A.不定值B.4C.3D.13.设栈 S 的初始状态为空。元素 a、b、c、d、e、f 依次通过栈 S,若出栈的顺序为 b、d、c、f、e、a,则栈 S 的容量至少应该为( )。(分数:1.00)A.3B.4C.5D.64.C 语言中各种
2、基本数据类型的存储空间长度排列为( )。(分数:1.00)A.charlongintfloatdoubleB.doublefloatlongintcharC.charintlongfloatdoubleD.floatintlongchardouble5.下述关于数据库系统的叙述中正确的是( )。(分数:1.00)A.数据库系统减少了数据冗余B.数据库系统避免了一切冗余C.数据库系统中数据的一致性是指数据类型一致D.数据库系统比文件系统能管理更多的数据6.下列选项中,不能用作标识符的是( )。(分数:1.00)A._1234_B._1_2C.int_2_D.2_int_7.下列选项中属于 C 语
3、言构造类型的是( )。(分数:1.00)A.指针类型B.空类型C.枚举类型D.数组类型8.有以下程序段:int x=3doprintf(“%d“,x-=2); while (!(-x);其输出结果是( )。(分数:1.00)A.1B.3 0C.1 -2D.死循环9.若有如下程序:main()char a=“1234“;int i,t=0;for(i=0;ai=0main()printf(“%1d/n“,fun(3);(分数:1.00)A.1B.2C.3D.414.若有如下程序:sub(p,n)int(*p)3,n;int i;for(i=0;i=n;i+)printf(“%d“,pi2);ma
4、in()int s33=1,2,3,4,5,6,7,8,9;sub(s,2);则程序运行后的输出结果是( )。(分数:1.00)A.369B.248C.456D.78915.若有如下程序段:struct studentint num;float score;stu3=10,85,60,58,32,23;main()struct student*t;t=stu;则下面表达式中值为 58 的是( )。(分数:1.00)A.(*t).numB.*(t+)-numC.(*+t)scoreD.(+t)-score16.执行下面程序的正确结果是( )。main()float a=1.9;switch ((
5、分数:1.00)A.case 0:printf(“0000“);17.若有以下定义和语句:int a10=1,2,3,4,5,6,7,8,9,10,*p=a则不能表示 a 数组元素的表达式是( )。(分数:1.00)A.*pB.a10C.*aD.ap-a18.若有如下程序:sub(int a,int b,int c)c=a+b;return(c);main()int x=3,y=4,z=6;sub(x,y,z);printf(%d”,z);则程序运行后的输出结果是( )。(分数:1.00)A.3B.6C.7D.419.对下述程序,正确的判断是( )。main()int a,b;scanf(“%
6、d“,C.intc2=1,2,3,4;D.int d32=1,2,34;33.算法的时间复杂度是指( )。(分数:1.00)A.执行算法程序所需要的时间B.算法程序的长度C.算法程序中的指令条数D.算法执行过程中所需要的基本运算次数34.下述程序的输出结果是( )。# include stdio.hint fun( int(分数:1.00)A.35.有以下程序:main()int aa44:1,2,3,4,5,6,7,8,3,9,10,2,4,2,9,6;int i,S=0;for(i=0;i4;i+) s+=aai1;printf(“%d/n“,s);程序运行后的输出结果是( )。(分数:1
7、.00)A.11B.19C.13D.2036.在最坏情况下,下列排序方法中时间复杂度最小的是( )。(分数:1.00)A.冒泡排序B.快速排序C.插入排序D.堆排序37.下面程序段中的循环体的执行次数是( )。for(i=4;i0;i-)for(j=1;j=4;j+)sum=sum+j;(分数:1.00)A.4B.0C.12D.1638.若 x、y、z、m 均为 int 型变量,则执行下面语句后 m 的值是( )。m=1; x=2; y=3;m=(mx) ? m : x;m=(my) ? m : y;m=(my) ? m : z;(分数:1.00)A.1B.2C.3D.439.C 语言中,函数
8、值类型的定义可以默认,此时函数值的隐含类型是( )。(分数:1.00)A.voidB.intC.floatD.double40.下面不属于软件工程 3 个要素的是( )。(分数:1.00)A.工具B.过程C.方法D.环境41.下面程序的输出结果是( )。# include stdio.hint x=1;void main()int x=2;printf(“%d,“,x);if(x=1)int x=4;printf(“%d,“,x+);printf(“%d“,x+);(分数:2.00)A.2,2B.1,1,2C.2,4,3D.2,342.有以下程序:void fun(char *c,int d)
9、*c=*c+1;d=d+1;printf(“%c,%c,“,*c,d);main()char a=A,b=a;fun(main()printf(“%1d/n“,fun(3);(分数:1.00)A.1 B.2C.3D.4解析:解析 本题的 fun 函数是一个递归函数,当参数 n 为 1 或 2 时返回 2,否则返回 n-fun(n-1)。递推下来就是 n-fun(n-1)=n- (n-1)-fun(n-2)=n-(n-1)+(n-2)-fun(n-3)=直到 fun()函数的参数等于 1 或 2,故 fun(3)=3-fun(2)=3-2=1。所以答案是 A。14.若有如下程序:sub(p,n)
10、int(*p)3,n;int i;for(i=0;i=n;i+)printf(“%d“,pi2);main()int s33=1,2,3,4,5,6,7,8,9;sub(s,2);则程序运行后的输出结果是( )。(分数:1.00)A.369 B.248C.456D.789解析:解析 本题首先定义了一个二维数组,然后将数组名作为参数传递给子函数 sub(),在子函数中使用了一个循环,循环变量 i 从 0 递增到 n(n 为 2),即循环了 3 次,依次输出数组的 a02、a12、a22三个元素,所以程序运行后输出的结果是 369,应该选择 A。15.若有如下程序段:struct studenti
11、nt num;float score;stu3=10,85,60,58,32,23;main()struct student*t;t=stu;则下面表达式中值为 58 的是( )。(分数:1.00)A.(*t).numB.*(t+)-numC.(*+t)scoreD.(+t)-score 解析:解析 本题是以结构体指针的方式防问结构体数组中的元素。main()函数之前声明了一个结构体,并在声明同时定义了一个全局结构体数组 stu3。主函数中,第一行定义了一个该结构体的指针 t,然后让 t 指向 stu,即 t 指向的是数组 stu 的第一个元素。选项 A 提取的是数组第一个元素的 num 成员
12、,值为10,不符合题意。选项 B 使用了一个后缀自增运算符,使 t 指向第二个元素,但 t+表达式返回的还是第一个元素的指针,故结果与选项 A 相同,不符合题意,选项 C 语法错误编译不会通过。故应该选择 D。16.执行下面程序的正确结果是( )。main()float a=1.9;switch ((分数:1.00)A.case 0:printf(“0000“);解析:解析 switch 语句只接受 int 型变量,如果不是则隐式转换为 int,由于 C 语言中 float 到 int的转换是截尾取整,故在 switch 中从 case 1:标号处开始执行,首先输出 4 个 1。此时又因为 c
13、ase 2:之前并没有 break;之类的跳转语句,所以 case 2:标号处的语句也被执行,输出 4 个 3。最后以默认的浮点数格式输出变量 a,变量 a 在 switch 语句中并未被改变,故最后输出为 1.900000,所以应该选择B。17.若有以下定义和语句:int a10=1,2,3,4,5,6,7,8,9,10,*p=a则不能表示 a 数组元素的表达式是( )。(分数:1.00)A.*pB.a10 C.*aD.ap-a解析:解析 程序中定义了数组 a10,则其元素的下标范围为 09,而 B 选项中的 a10所表示的元素已经超出 a 数组元素的范围,故应该选择 B。18.若有如下程序
14、:sub(int a,int b,int c)c=a+b;return(c);main()int x=3,y=4,z=6;sub(x,y,z);printf(%d”,z);则程序运行后的输出结果是( )。(分数:1.00)A.3B.6 C.7D.4解析:解析 本题定义了个子函数 sub(),因为 sub()的形参为 int 型变量,而不是指针,即为传值调用,所以 sub()函数不会改变实参 x、y、z 的值,故最后输出结果为 6,应该选择 B。19.对下述程序,正确的判断是( )。main()int a,b;scanf(“%d“,C.intc2=1,2,3,4;D.int d32=1,2,34
15、; 解析:解析 选项 A 中,数组的长度使用了变量 N,而在 C 语言中是不能用变量来定义数组的长度的,故选项 A 错误。在 C 语言中,给二维数组赋初值时,行数不能超过定义的行数,每行的初值个数不能超过定义时的列数,故选项 B 错误。选项 C 数组的第二维下标默认,而在 C 语言中,数组的第二维下标不能默认,故选项 C 错误。所以,D 选项为所选。33.算法的时间复杂度是指( )。(分数:1.00)A.执行算法程序所需要的时间B.算法程序的长度C.算法程序中的指令条数D.算法执行过程中所需要的基本运算次数 解析:解析 算法的时间复杂度实际上就是执行算法程序所需要的计算工作量,也就是算法执行过
16、程中所需要的基本运算次数,与编写算法程序所使用的程序设计语言、执行算法程序时所使用的计算工具以及程序员的水平无关。34.下述程序的输出结果是( )。# include stdio.hint fun( int(分数:1.00)A.解析:解析 本题主函数中的 for 循环会循环两次,即输出连续两次调用 fun(2)的返回值。在 fun()函数中定义了一个静态变量 c,第一次调用 fun()时 c 被初始化为 3,然后自增为 4,最后输出 a+b+c 为2+1+4=7。由于静态变量的生存周期为整个程序执行周期,所以第二次调用 fun()时 c 的值为 4,然后自增为 5,故最后输出 a+b+c 为
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
5000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 职业资格 二级 语言 笔试 80 答案 解析 DOC
