2015年9月二级c语言,2015年9月计算机二级《C语言》模拟卷(2)

本文档包含一系列C语言程序设计题目及其解析,涉及算法、数据结构、文件操作、循环控制等多个方面。题目涵盖了从基本的算术运算到复杂的字符串处理和文件读写,还涉及到函数的递归调用和指针的运用。解答详细解释了每道题目中程序的运行过程和结果,有助于读者深入理解C语言的语法和编程技巧。
摘要由CSDN通过智能技术生成

29

09520531G-23.png

095205JO-24.png

若执行以上程序从键盘上输入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.

095205D23-25.png

B.

0952053530-26.png

C.

0952055F4-27.png

D.

0952052B1-28.png

参考答案: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.

095205D33-29.png

B.

0952052234-30.png

C.

095205KR-31.png

D.

0952051641-32.png

参考答案:B

参考解析:选项B先计算关系表达式“ˊAˊ<=c”的值是0还是1,再比较该值与字符ˊzˊ之间的大小关系,不能实现题目所要求的功能。

33

0952052N6-33.png

=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以下程序的输出结果是(  )。

095205Da-34.png

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有下列程序:

095205LL-35.png

执行后的结果是(  )。

A.输出字符a的ASCⅡ码B.输出字符C的ASCⅡ码C.输出字符CD.程序出错

参考答案:D

参考解析:因为字符数组s[];中的数组名S表示的是一个地址常量。所以语句“s+=2;”不能将指针在当前位置的基础上再向后移动两位,因而程序编译时出错。

37有以下程序

0952055a1-36.png

程序的运行结果是(  )。

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有下列程序:

095205IR-37.png

执行后的输出结果是(  )。

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有下列程序:

095205G47-38.png

095205KX-39.png

程序的输出结果是(  )。

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()的横线上填入所编写的若干表达式或语句。

试题程序:

0952054239-40.png

095205J12-41.png

参考解析:

【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()函数,不得增行或删行,也不得更改程序的结构。

试题程序:

0952054239-40.png

参考解析:

095205B10-43.png

四、程序设计题

43请编写函数proc(),其功能是:计算并输出给定10个数的方差。

0952051641-32.png

例如,给定的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()的花括号中填人所编写的若干语句。

试题程序:

095205JE-45.png

参考解析:

0952053242-46.png

0952054403-47.png

【解析】题目要求求方差,因此首先我们应通过循环求得其平均数,然后通过循环来求其平方差,最后求其方差,把方差返回到主函数中。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值