资源预览内容
亲,该文档总共13页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
2016年3月全国计算机等级考试二级C语言真题(总分100, 考试时间120分钟)一、选择题(每小题1分,共40分)1. 有以下程序:#include int mul(int val) static int init = 1;return init *= val;main() int i;for(i=1;i=5;i+)printf(%d,mul(i);程序运行后的输出结果是( )。A 1,2,6,24,120,B 1,2,3,4,5,C 1,1,1,1,1,D 1,2,4,6,8,该问题分值: 1答案:Astatic静态变量只在声明时初始化一次。mul()累乘,第一次init=1,init=val,第二次init=1,val=2,第三次init=2,val=3,第四次init=6,val=4,第五层init=24,val=5,因此结果为l,2,6,24,120。故答案为A选项。2. 下列叙述中正确的是( )。A 软件是程序、数据和文档B 软件是程序和数据C 软件是算法和数据结构D 软件是算法和程序该问题分值: 1答案:A计算机软件由两部分组成:一是机器可执行的程序和数据;二是机器不可执行的,与软件开发、运行、维护、使用等有关的文档。故选A选项。3. 语句prinff(”dn”,strlen(”t”、n06508AB”);的输出结果是( )。A 6B 7C 8D 9该问题分值: 1答案:A字符串”tnV、06508AB”中共有13个字符,而strlen()函数从字符串第一个字符开始扫描,直到碰到第一个结束符0为止,然后返回计数器值(长度不包含”、O”)。故输出结果为6。答案为A选项。4. 函数fun的功能是在a所指的具有n个元素的数组中查找最大值并返回给调用函数,函数不完整。int fun(int *a,int n) int *p,*s;for(p=a,s=a;p-asB * P*sC apasD paPs该问题分值: 1答案:B函数fun的功能是在形参a所指的具有n个元素的数组中查找最大值并返回。通过for循环比较,s始终指向最大值的那个元素。取指针的值,使用+P,因此比较使用P和8,需要找到最大值,当8+P时,修改指针s的指向,因此答案为B选项。5. 若有语句:int a34,(。P)4;P=a;,则以下选项中叙述错误的是( )。A 系统将开辟一个名为P的二维数组,“oo中的值即为aoo中的值B P+1代表a10的地址C P中将存放a数组的首地址D P+2代表a数组最后一行的首地址该问题分值: 1答案:A(+P)4定义了一个数组指针。P可以指向类似于arry4的数组,题设中,P不是一个二维数组,只是可以指向这类二维数组,因此选项A错误。P+1代表了第一行第一个元素的地址,P=a指向数组a的首地址,则B、C选项正确,同理可知选项D也正确。故答案为A选项。6. 有以下程序:#include#includemain() chara =TEXT,*b=+,c3=1;printf(%d,%d,strlen(a),sizeof(a);printf(%d,%d,strlen(b),sizeof(b);printf(%d,%d,n,strlen(c),sizeof(c);程序运行后的输出结果是( )。A 4,5,2,4,1,3,B 4,4,2,2,1,1,C 5,5,3,3,2,2,D 4,4,2,2,1,3该问题分值: 1答案:Asizeof()是运算符,在头文件中typedef为unsigned int,其值在编译时即计算好了,参数可以是数组、指针、对象、函数等。它的功能是:获得保证能容纳实现所建立的最大对象的字节大小。strlen(char)函数,要在运行时才能计算,参数必须是字符型指针(char),当数组名作为参数传人时,实际上数组就退化成指针了,它的功能是:返回字符串的长度。该字符串可能是自己定义的,也可能是内存中随机的,该函数实际完成的功能是从代表该字符串的第一个地址开始遍历,直到遇到结束符NULL,返回的长度大小不包括NULL。sizeof(a)求数组a所占空间的大小,包括字符串最后的、0,所以sizeof(a)=5,strlen()遇到、0就结束,strlen(a)=4。strlen(b)是指针指向的字符串长度,sizeof(b)是指针的大小。strlen(c)是字符串的长度,sizeof(c)是数组的长度。因此,输出4,5,2,4,l,3。故答案为A选项。7. 若有定义:int a,b,C;以下程序段的输出结果是( )。a=11;b=3;C=0;pfinff(”dn”,c=(ab,aB.);A 2B 0C 3D 1该问题分值: 1答案:Ac语言中,逗号运算符可以把两个以上(包含两个)的表达式连接成一个表达式。逗号运算符的优先级是所有运算符中级别最低的,逗号运算符保证左边的子表达式运算结束后才进行右边的子表达式的运算。也就是说,逗号运算符是一个序列点,其左边所有副作用都结束后,才对其右边的子表达式进行运算,并以最右边表达式值作为整个逗号表达式的值。因此变量c的值为ab即113=2。放答案为A选项。8. 若有定义:doublea,b,c;能正确给a,b,c输入数据的语句是( )。A seanf(”lf1f1P&a,b,&C.;B scanf(-tfff,&a,b。&C.:C scanf(”Iflflf,a,b,C.;D scanf(”lflflf,&a,&b,C.;该问题分值: 1答案:DIf,le是针对double类型的,如果仅用f,输入的数据可能不完全接收,数据的精度可能不足。f主要针对tloat类型的变量输入,因此选项8错误。根据题目格式可知选项A,C错误。故答案为D选项。9. 有以下程序段:char str412=aaa,bbb,ccc,ddd,*p4;int i;for(i=0;i4;i+) pi=stri;以下选项中不能正确引用字符串的是( )。A 3B p3C str2D *P该问题分值: 1答案:At p3一p30是一个字符,不是字符串,选项A错误。P3和str2和+P分别代表了ddd,eec,flaa。答案为A选项。10. 在最坏情况下,二分查找法的时间复杂度为( )。ABCD n该问题分值: 1答案:C二分法查找也称拆半查找,能使用二分1法查找的线性表必须满足两个条件,用顺序存储结构以及线性f表有序。利用二分法查找元素x的过程如下:将x与线性表1的中间项比较,如果X的值与中间项的值相等,则查找成功,1结束查找;如果x小于中间项的值,则在线性表的前半部分以二分法继续查找;如果x大于中间项的值,则在线性表的后半1部分以二分法继续查找。可以证明,对于长度为n的有序线性f表,在最坏情况下,二分法查找需比较l092n次,故时间复杂度1为l092n。故选择C选项。11. 有以下程序:#includestruct tt int x;struct tt *y;s2=1,0,2,0;main() struct tt *p=s;p-y=s;printf(%d,=p-x);程序运行后的输出结果是( )。A 2B 0C 1D 3该问题分值: 1答案:AP=s,可得P指向so,P一Y指向s1,现P-Y=s,因此P与Y指向s0。因此P-X=1,+PIx等价于+(P_x),因此打印结果为2。答案为A选项。12. 若有定义:typedefint*T10;T a;则以下选项与上述定义中a的类型完全相同的是( )。A int*a10;B int(*A.10;C int a10;D int(*a10);该问题分值: 1答案:Ac语言允许由用户自己定义类型说明符,也就是说允许由用户为数据类型取”别名”。类型定义符typedef即可用来完成此功能,可以完全代替原来的类型说明符。因此,变量a的类型为inta10。typedefintT10,由于运算符优先级高于,可以看成typedef int10T,替换T可得int10,a=inta10,因此,答案为A选项013. 医生可以为病人开不同的药,而同一种药也可由不同医生开给病人,则实体医生和实体药之间的联系是( )。A 多对多B 一对一C 多对一D 一对多该问题分值: 1答案:A实体集之间通过联系来建立联接关系分为三类:一对一联系(1:1)、一对多联系(1:m)、多对多联系(m:n)。由于医生可以为病人开不同的药,而同一种药也可由不同医生开给病人,所以两者的联系属于多对多。故选A选项。14. 为了建立如图所示的存储结构(即每个结点含两个域,data是数据域,next是指向结点的指针域)则在( )处填入的选项是( )。*struetlinkehardata;( )node;A struetlink*next;B linknext;C link$next;D struetlinknext;该问题分值: 1答案:A存储结构用链式存储。链式结构每个节点有个指针域,指针域指向下一个链式结构的节点,因此指针域的结构应该是该结构形式,因此应定义为struct linknext,故答案为A选项。struct是结构体的说明符,不能省。15. 有以下程序:#include main() char a,b,c,d;scanf(%c%c,&a,&b);c=getchar();d=getchar();printf(%c%c%cn,a,b,c,d);当执行程序时,按下列方式输入数据(从第l列开始,代表回车,注意:回车也是一个字符1234则输出结果是( )。A 123B 12C 1234D 12该问题分值: 1答案:Aseanf()函数从标准输入输出中读人两个字符1、2分别赋给变量ab,遇到回车自动结束,但回车符已经存入缓冲区,函数getchar()将从中接受了回车符,故c赋值为回车符,第二个getehar()读入字符3,因此a=1,b=2,c=,d=3。故答案为A选项。16. 有以下程序:#include main() char ch=D;while(chA)d |ch -;putch
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号