2018年9月计算机二级C语言考试冲刺试题及答案
2018-09-25 11:30:08 来源:考试吧

1[简答题]下列给定程序中函数fun的功能是:通过某种方式实现两个变量值的交换,规定不允许增加语句和表达式。

例如,变量a中的值原为8,b中的值原为3,程序运行后a中的值为3,b中的值为8。

请改正程序中的错误,使它得出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更

改程序的结构!

试题程序:

参考解析:

【参考答案】

(1)t=*x;*X=Y;(2)return(t);或return t;

【考点分析】

本题考查:指针型变量的使用;通过return语句完成函数值的返回。

【解题思路】

首先,定义变量t作为中间变量,然后进行数据交换,注意参数x是指针变量,交换时应使用*x,最后确定返回值;根据代码b=fun(8a'b),可以知道返回值将赋给变量b,而b中应存放交换前*x中的值,所以函数应返回变量t。

2[单选题] 有以下程序

程序运行后的输出结果是

A.3B.1C.2D.4

参考答案:C

参考解析:本题考查函数的递归调用,将函数参数带入函数中,一步步递归即可得到结果,结果为2,选项C正确。

3[单选题] 以下叙述中正确的是(  )

A.在算法设计时,可以把复杂任务分解成一些简单的子任务

B.在C语言程序设计中,所有函数必须保存在一个源文件中

C.只要包含了三种基本结构的算法就是结构化程序

D.结构化程序必须包含所有的三种基本结构.缺一不可

参考答案:A

参考解析:C语言的程序中,函数不一定都放在同一个源文件中,可以分别放在不同源文件中,通过#inClude命令来引用,所以B错误。结构化程序可以包含三种基本结构中的一种或几种,所以C,D错误。

4[单选题] 若有语句: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数组最后一行的首地址

参考答案:A

参考解析:(+P)[4]定义了一个数组指针。P可以指向类似于arry[][4]的数组,题设中,P不是一个二维数组,只是可以指向这类二维数组,因此选项A错误。P+1代表了第一行第一个元素的地址,P=a指向数组a的首地址,则B、C选项正确,同理可知选项D也正确。故答案为A选项。

5[单选题] 有以下程序:

程序运行后的输出结果是( )。

A.11,11B.29,29C.26,29D.121.121

参考答案:B

参考解析:#define命令是c语言中的一个宏定义命令,标识符一般使用大写,为了区分其他标识符,它用来将一个标识符定义为一个字符串,该标识符被称为宏名,被定义的字符串称为替换文本。宏定义不进行其他操作,仅仅只是替换标识符。S(k+j+2)=k+j+2}k+j+2/k+j+2,经计算可得29,s(j+k+2)=J+k+2}k+j+2/j+k+2,计算可得29。因此输出为29。29。答案为B选项。

6[单选题] 有三个关系R、S和T如下:

则由关系R和S得到关系T的操作是( )。

A.自然连接B.交C.除D.并

参考答案:C

参考解析:如果S=T/R,则s称为T除以R的商。在除运算中s的域由T中那些不出现在R中的域所组成,对于s中的任一有序组,由它与关系R中每个有序组所构成的有序组均出现在关系T中。所以本题选择C。

7[单选题] 有以下程序:

程序运行后的输出结果是( )。

参考答案:A

参考解析:结构体s中n代表数组的实际长度,a是个定长数组。函数f()对结构体s内的a数组元素使用冒泡法进行递增排序。因此最终数组的元素是一个递增序列。故答案为A选项。

8[单选题] 有以下程序:

程序运行后的输出结果是( )。

A.2,3B.2,1C.1,2D.3,1

参考答案:B

参考解析:结构体tt是一个递归定义,类似于链表,

通过成员变量Y链接起来。P=s+1指向s[1]。P一>Y指向8[2],但现在P->Y=s,因此s[2]=s[O],此时8[]={1.0,2.0,1.0},而P在s[1]位置,因此P_>x为2,P=P_>Y,P指向s[2],因此P_>x=1,故打印结果为2,1。答案为B选项。

9[单选题] 以下叙述错误的是( )。

A.一个算法所包含的操作步骤应该是有限的

B.任何能通过编译和运行的算法都一定能得到所期望的结果

C.算法中每一条指令必须有确切的含义

D.算法可以用各种描述方法来进行描述

参考答案:B

参考解析:算法的特点:零个或多个输入,至少一个输出,可行性(能编程实现),有穷性(有限步出结果),确定性(描述不能有歧义)。可知选项A,c,D正确。c语言中。通过编译,可以运行的程序,不一定符合题目的本意,因此即使可以运行得到结果,也不一定和预期的结果一样,否则就不需要调试和修改程序了,故B选项错误。答案为B选项。

10[单选题] 设有定义:

int a=1,b=2,C=3;

以下语句中执行效果与其他三个不同的是( )。

A.if(a>B.C=a,a=b,b=C;B.if(a>B.{C=a,a=b,b=C;}C.if(a>B.C=a;a=b;b=c;D.if(a>B.{C=a;a=b;b=c;}

参考答案:C

参考解析:由于a小于b,所以所有选项中的条件都为假,c选项中实际执行了a=b;b=c;两个操作。而A、B、D选项由于条件不成立,所以什么也没有做,所以选择c选项。