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.一个算法所包含的操作步骤应该是有限的
B.任何能通过编译和运行的算法都一定能得到所期望的结果
C.算法中每一条指令必须有确切的含义
D.算法可以用各种描述方法来进行描述
参考答案:B
参考解析:算法的特点:零个或多个输入,至少一个输出,可行性(能编程实现),有穷性(有限步出结果),确定性(描述不能有歧义)。可知选项A,c,D正确。c语言中。通过编译,可以运行的程序,不一定符合题目的本意,因此即使可以运行得到结果,也不一定和预期的结果一样,否则就不需要调试和修改程序了,故B选项错误。答案为B选项。
6[单选题] 设有定义:
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选项。