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选项。