三、C语言(共70分,本科必答,专科只答指定的45分)
(一)单选题(每小题1分,共9分,本科、专科必答。)
1、 答案:C
2、 答案:A
3、 答案:B
4、 答案:C
5、 答案:C
6、 答案:B
7、 答案:B
8、 答案:B
9、 答案:A
(二)写出程序运行结果(每小题4分,共20分,本科、专科必答。)
1、答案:16 解析:当i=0,s=0,进行第1次循环,i%2=0%2=0,if条件不成立,继续执行循环体,使得i自加1,s=1;当i=1<7,循环条件成立,继续。当i=1,s=1,进行第2次循环,i%2=1%2=1,if条件成立,执行条件语句体,使得i自加为2后继续循环;当u=2<7,循环条件成立,继续。依次类推,可以看出当i为奇数时,才将i的值累加到s中,依次当i=7时,循环条件不成立,此时s=1+3+5+7=16。
2、答案:8
3、答案:30 25 解析:函数fun调用时,将c传值给形式参数b,在函数fun中,a为静态局部变量,此时全局变量a不起作用,执行a+=b++,似的a等于30并输出,在main函数的a+=c++中,a为全局变量,使得a等于25并输出。
4、答案:7,8,7 解析:函数f通过“传地址”调用,返回较小的地址,调用f(p,q)将较小数的地址p赋值给r,使得p和r都指向变量a,q仍然指向变量b。因此输出为7、8、7。
5、答案:YADNUS SI YADOT
(三)程序填空(每空2分,共18分,专科只答第1、第2小题,本科全答。)
1、(1)-f或f*-1或-1*f (2)fun(10)
2、 (3)i++ (4)j<=i (5)a[i][j]=a[j][i]
3、(6)x>=0 (7) x<min
4、(8)sum=0
(9) sum=sum+a[i][i]
(四)阅读程序回答问题
(每小题6分,共18分,专科只答第1小题,本科全答。)
答1:在含有10个元素的s数组中查找最大数,及最大数所 在位置(即,下标值),最大值可能不止一个。最大值作为函数值返回,最大值的个数通过指针变量n传回,所在位置由数组pos传回。
答2: The max:8
The positions:1 4 9
答3:将字符串P中的所有字符复制到字符串B中,要求每复制三个字符后插入一个空格
答4:abc 123 xy
答5:可以
答6:HGFEDCBA
(五)程序改错
(共5分,不准更改程序结构,不准增删语句行,专科不答,本科必答。)
错误1处应改为:void fun(char t[])
错误2处应改为:t[j]=t[i];
责任编辑:cyth