2016年3月全国计算机等级考试
二级《C语言》真题
(总分100, 考试时间120分钟)
一、选择题(每小题1分,共40分) 1. 有以下程序: #include
{ static int init = 1; return init *= val; }
main()
{ int i;
for(i=1;i<=5;i++) printf(\}
程序运行后的输出结果是( )。 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 答案:A
static静态变量只在声明时初始化一次。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(”%d\n”,strlen(”\t\”\、、n\\\065\08AB”));的输出结果是( )。 A 6 B 7 C 8 D 9
该问题分值: 1 答案:A
字符串”\t\¨\\\nV、065\08AB”中共有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-a 在if语句下划线处应填人的选项是( )。 A O>s B * P>*s C a[p]>a[s] D p—a>P—s 该问题分值: 1 答案:B 函数fun的功能是在形参a所指的具有n个元素的数组中查找最大值并返回。通过for循环比较,s始终指向最大值的那个元素。取指针的值,使用+P,因此比较使用·P和}8,需要找到最大值,当}8<+P时,修改指针s的指向,因此答案为B选项。 5. 若有语句:int a[3][4],(。P)[4];P=a;,则以下选项中叙述错误的是( )。 A 系统将开辟一个名为P的二维数组,“o][o]中的值即为a[o][o]中的值 B P+1代表a[1][0]的地址 C P中将存放a数组的首地址 D P+2代表a数组最后一行的首地址 该问题分值: 1 答案:A (+P)[4]定义了一个数组指针。P可以指向类似于arry[][4]的数组,题设中,P不是一个二维数组,只是可以指向这类二维数组,因此选项A错误。P+1代表了第一行第一个元素的地址,P=a指向数组a的首地址,则B、C选项正确,同理可知选项D也正确。故答案为A选项。 6. 有以下程序: #include { chara[] =\printf(\printf(\printf(\} 程序运行后的输出结果是( )。 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 答案:A sizeof()是运算符,在头文件中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(”%d\n”,c=(a/b,a%B.); A 2 B 0 C 3 D 1 该问题分值: 1 答案:A c语言中,逗号运算符可以把两个以上(包含两个)的表达式连接成一个表达式。逗号运算符的优先级是所有运算符中级别最低的,逗号运算符保证左边的子表达式运算结束后才进行右边的子表达式的运算。也就是说,逗号运算符是一个序列点,其左边所有副作用都结束后,才对其右边的子表达式进行运算,并以最右边表达式值作为整个逗号表达式的值。因此变量c的值为a%b即11%3=2。放答案为A选项。 8. 若有定义:doublea,b,c;能正确给a,b,c输入数据的语句是( )。 A seanf(”%lf%1f%1P‘&a,&b,&C.; B scanf(-t%f%f%f¨,&a,&b。&C.: C scanf(”%If%lf%lf’,a,b,C.; D scanf(”%lf%lf%lf'’,&a,&b,&C.; 该问题分值: 1 答案:D %If,%le是针对double类型的,如果仅用%f,输入的数据可能不完全接收,数据的精度可能不足。%f主要针对tloat类型的变量输入,因此选项8错误。根据题目格式可知选项A,C错误。故答案为D选项。 9. 有以下程序段: char str[4][12]={\int i; for(i=0;i<4;i++) p[i]=str[i]; 以下选项中不能正确引用字符串的是( )。 A 3 B p[3] C str[2] D *P 该问题分值: 1 答案:A t p[3]一p[3][0]是一个字符,不是字符串,选项A错误。P[3]和str[2]和+P分别代表了ddd,eec,flaa。答案为A选项。 10. 在最坏情况下,二分查找法的时间复杂度为( )。 A B C D n 该问题分值: 1 答案:C
相关推荐: