2015年9月计算机二级《C语言》模拟卷(2)
29
若执行以上程序从键盘上输入3和4时,则输出结果是( )。
A.14B.16C.18 D.20
参考答案:B
参考解析:scanf(''%d,%d'',&a,&b);//a=3,b=4s=a;//s=3if(s=b)//此处先将b(b=4赋给s,则s=4 s=b返回值为4s*=s://s=s*s=16因此输出结果为16。正确答案为B。
30设变量已正确定义,则以下能正确计算f=n!的程序是( )。
A.
B.
C.
D.
参考答案:D
参考解析:由n!的数字定义可知n!=n*(n-1)*(n 2)*…*1。在选项A中,由于f的初值为0,在for循环语句中,f依次乘以1,2,3,…,n,最后计算得到f=n!=0,所以选项A不正确。在选项B中,f的初值为1,在for循环语句中,f依次乘以1,2,3,…,(n-1),最后计算得到f=(n-1)!,所以选项B不正确。在选项C中,f的初值为l,在for循环语句中,f依次乘以n,n+1,n+2,…,所以选项C不正确。在选项D中,f的初值为1,在for循环语句中,f依次乘以n,n-1,n-2,…,2,最后计算得到f=n!,所以选项D正确。
31下列叙述中正确的是( )。
A.算法的执行效率与数据存储结构无关
B.算法的空间复杂度是指算法程序中指令(或语句)的条数
C.算法的有穷性是指算法必须能在执行有限个步骤之后终止
D.以上3种描述都不对
参考答案:C
参考解析:在程序设计中,算法执行效率与数据的存储结构密切相关。算法的空间复杂度是指算法执行过程中所需存储空间。
32已有定义:char c;,程序前面已在命令行中包含ctype.h文件,不能用于判断c中的字符是否为大写字母的表达式是( )。
A.
B.
C.
D.
参考答案:B
参考解析:选项B先计算关系表达式“ˊAˊ<=c”的值是0还是1,再比较该值与字符ˊzˊ之间的大小关系,不能实现题目所要求的功能。
33
=r;”,则以下正确的叙述是( )。
A.两个*P含义相同,都说明给指针变量P赋值
B.在“double r=99,*p=&r;”中,把r的地址赋给了p所指的存储单元
C.语句“*p=r;”把变量r的值赋给指针变量p
D.语句“*p=r;”取变量r的值放回r中
参考答案:B
参考解析:在定义*p=&r时,是表示r的地址赋给了P所指的存储单元,因此选项B正确。
34以下关于字符串的叙述中正确的是( )。
A.C语言中有字符串类型的常量和变量
B.两个字符串中的字符个数相同时才能进行字符串大小的比较
C.可以用关系运算符对字符串的大小进行比较
D.空串一定比空格打头的字符串小
参考答案:D
参考解析:字符串常量是由双引号括起来的一串字符,所以A选项错误;任意两个字符串的大小比较要调用字符串比较函数strcmp(sl,s2)来进行,所以选项B和C错误。
35以下程序的输出结果是( )。
A.8,7,8,7B.7。8,7,8C.8,7,7,8 D.7,8,8,7
参考答案:C
参考解析:在“r=P;p=q;q=r;”三个语句是表示P与q交换,经过交换后P指向b的地址,q指向a的地址,因此最后输出为8,7,7,8,故选择C选项。
36有下列程序:
执行后的结果是( )。
A.输出字符a的ASCⅡ码B.输出字符C的ASCⅡ码C.输出字符CD.程序出错
参考答案:D
参考解析:因为字符数组s[];中的数组名S表示的是一个地址常量。所以语句“s+=2;”不能将指针在当前位置的基础上再向后移动两位,因而程序编译时出错。
37有以下程序
程序的运行结果是( )。
A.1,2,3,0,0,0,0,0,0,0,
B.1,2,3,1,2,3,0,0,0,0,
C.123,0,0,0,0,l23,0,0,0,0,
D.1,2,3,0,0,1,2,3,0,0,
参考答案:D
参考解析:本题程序首先用函数fopen()以“wb”的方式开打文件“d2.dat”,然后调用两次fwrite函数将数组a的5个元素,依次输出到文件fp中,共l0个字节,关闭文件。再次打开文件,使用文件指针指向文件的开头,调用fread函数从文件印中读取这10个字节的数据到数组a中。
38有下列程序:
执行后的输出结果是( )。
A.5,5B.5.1lC.11,11D.11,5
参考答案:B
参考解析:子函数fun(int x,int y),将变量in和i声明为局部静态变量,因此第l次调用主函数后,局部静态变量In和i的值分别为5和3,第1次函数调用结束时,它们的值不释放保持不变,所以第2次调用时,局部静态变量m和i的初始值分别为5和3,即在执行“i+=m+1”时,i的值为9,因此最终m的值为11。
39有下列程序:
程序的输出结果是( )。
A.1B.2 0C.1-4D.死循环
参考答案:C
参考解析:本题考查do-while循环。先执行d0的内容,也就是printf语句,x=x-4=1,输出1,判断while循环的控制条件,--x=0,则!(--x)为非零,循环条件成立,执行下一次循环;x=x-4=-4,输出-4,判断while循环的条件,--x=-5,则!(--x)为零,循环条件不成立,结束循环。
40标准库函数fgets(s,n,file)的功能是( )。
A.从文件file中读取长度为n的字符串存入字符数组S由
B.从文件file中读取长度不超过n-1个字符的字符串放到字符数组S中
C.从文件file中读到n个字符串存入字符数组s中
D.从文件file中读取长度为n-1个字符的字符串存人字符数组s中
参考答案:B
参考解析:本题考查fgets()函数的使用调用形式:fgets(S,n,fp)。fgets函数参数说明:“s”可以是一个字符数组名,也可以是指向字符串的指针;“n”为要读取的最多的字符个数;“fp”是指向该文件型指针。fgets函数的功能是:从fp所指向的文件中读取长度不超过n-1个字符的字符串,并将该字符串放到字符数组s中,读入字符串后会自动在字符串末尾加入″\0″结束符。表示字符串结束。
二、程序填空题
41请补充函数proc(),该函数的功能是判断一个数是否为素数。该数是素数时,函数返回字符串:“yes!”,否则函数返回字符串:“no!”,并在主函数中输出。
注意:部分源程序给出如下。
请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的横线上填入所编写的若干表达式或语句。
试题程序:
参考解析:
【l】char*proc(int n)【2】2【3】n%i==0
【解析】由整个程序可知,【1】应为函数proc()的函数头。根据主函数中的调用可知形参的个数和类型,因此,【1】处填“char”proc(int n)”。素数为只能被1和它本身整除的整数。要判断一个整数是否为素数,要看它是否能被除1和小于它本身之外的数整除,因此,【2】处填“2”;【3】处填“n%i==0”。
三、程序改错题
42给定程序中,函数proc()的功能是:使数组中的元素的值缩小5倍。
请修改程序中的错误,使它能得出正确的结果。
注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。
试题程序:
参考解析:
四、程序设计题
43请编写函数proc(),其功能是:计算并输出给定10个数的方差。
例如,给定的10个数为88.0,89.5,54.0,78.5,89.0,63.0,85.7,83.0,77.0,83.0,则输出为S=11.195271。
注意:部分源程序给出如下。
请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填人所编写的若干语句。
试题程序:
参考解析:
【解析】题目要求求方差,因此首先我们应通过循环求得其平均数,然后通过循环来求其平方差,最后求其方差,把方差返回到主函数中。