1、二级 C 语言机试-110 及答案解析(总分:100.00,做题时间:90 分钟)一、填空题(总题数:1,分数:30.00)函数 fun 的功能是:逆置数组元素中的值。形参 n 给出数组中数据的个数。例如:若 a 所指数组中的数据依次为:1、2、3、4、5、6、7、8、9,则逆置后依次为:9、8、7、6、5、4、3、2、1。注意:部分源程序已给出。请勿改动主函数 main 和其他函数中的任何内容,仅在 fun 函数的横线上填入所编写的若干表达式或语句。试题程序:#includestdio.hvoid fun(int a,int n)int i,t;for(i=0;i (1) ;i+)t=ai;
2、ai=an-1- (2) ;(3) =t;Void main()int b9=1,2,3,4,5,6,7,8,9),i;printf(“/nThe original data:/n“);for(i=0;i9;i+)printf(“%4d“,bi);printf(“/n“);fun(b,9);printf(“/nThe data after invert:/n“);for(i=0;i9;i+)printf(“%4d“,bi);printf(“/n“);(分数:30.00)填空项 1:_填空项 1:_填空项 1:_二、改错题(总题数:1,分数:30.00)1.下列给定程序中函数 fun 的功能是:
3、将 tt 所指字符串中的小写字母全部改为对应的大写字母,其他字符不变。例如,若输入“Ab,cD”,则输出“AB,CD”。请改正程序中的错误,使它能得出正确的结果。注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!试题程序:#includeconio.h#inctudestdio.h#includestring.hchar*fun(char tt)int i;for(i=0;tti;i+)/*found*/if(tti=a)|(tti=z)/*found*/tti+=32;return(tt);void main()char tt81;printf(“/nPlease ent
4、er a string:“);gets(tt);printf(“/nThe result string is:%s/n“,fun(tt);(分数:30.00)填空项 1:_三、编程题(总题数:1,分数:40.00)2.编写函数 fun,其功能是计算:(分数:40.00)_二级 C 语言机试-110 答案解析(总分:100.00,做题时间:90 分钟)一、填空题(总题数:1,分数:30.00)函数 fun 的功能是:逆置数组元素中的值。形参 n 给出数组中数据的个数。例如:若 a 所指数组中的数据依次为:1、2、3、4、5、6、7、8、9,则逆置后依次为:9、8、7、6、5、4、3、2、1。注意
5、:部分源程序已给出。请勿改动主函数 main 和其他函数中的任何内容,仅在 fun 函数的横线上填入所编写的若干表达式或语句。试题程序:#includestdio.hvoid fun(int a,int n)int i,t;for(i=0;i (1) ;i+)t=ai;ai=an-1- (2) ;(3) =t;Void main()int b9=1,2,3,4,5,6,7,8,9),i;printf(“/nThe original data:/n“);for(i=0;i9;i+)printf(“%4d“,bi);printf(“/n“);fun(b,9);printf(“/nThe data
6、after invert:/n“);for(i=0;i9;i+)printf(“%4d“,bi);printf(“/n“);(分数:30.00)填空项 1:_ (正确答案:n/2)解析:填空项 1:_ (正确答案:i)解析:填空项 1:_ (正确答案:an-i-1)解析:解析 fun 函数实现的功能是实现数组的逆置。具体步骤通过参数传递,得到数组指针(即数组名)和数组记录大小的变量 n,通过这两个参数配置 for 循环,遍历数组的中间的元素位置,每次循环都将 i 位置和对应位置结点(i 距离 0 位置等于其距离尾位置的结点)的元素交换,由此实现数组的逆置。二、改错题(总题数:1,分数:30.0
7、0)1.下列给定程序中函数 fun 的功能是:将 tt 所指字符串中的小写字母全部改为对应的大写字母,其他字符不变。例如,若输入“Ab,cD”,则输出“AB,CD”。请改正程序中的错误,使它能得出正确的结果。注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!试题程序:#includeconio.h#inctudestdio.h#includestring.hchar*fun(char tt)int i;for(i=0;tti;i+)/*found*/if(tti=a)|(tti=z)/*found*/tti+=32;return(tt);void main()char tt
8、81;printf(“/nPlease enter a string:“);gets(tt);printf(“/nThe result string is:%s/n“,fun(tt);(分数:30.00)填空项 1:_ (正确答案:(1)错误:if(tti=a)|(tti=z)正确:if(tti=a)&(tti=z)(2)错误:tti+=32;正确:tti-=32;)解析:解析 题目要求将小写字母改为对应的大写字母,要判断是否是小写字母,只需判断字母是否在az 之间,因此应该是(tti=a)&(tti=z);又已知小写字母的 ASCII 码值比对应大写字母的 ASCII 值大 32,因此本题的
9、解题思路是从字符串的第一个字母开始遍历,判断是否为小写字母,如果是,则 ASCII 码值减 32。三、编程题(总题数:1,分数:40.00)2.编写函数 fun,其功能是计算:(分数:40.00)_正确答案:(double fun(int m)int i;double s=0.0;for(i=1;i=m;i+)s=s+log(i);/*计算 s=ln(1)+ln(2)+ln(3)+ln(m)*/return sqrt(s);/*对 s 求平方根并返回*/)解析:解析 题目要求写出程序实现数学表达式的功能,需要用 for 循环计算累加的结果,调用 sqrt 函数实现求平方根。循环变量的范围是 1m,每次循环都进行一次累加求和。需要特别注意的是,log 函数的形式参数为 double 型变量,用于循环的计数变量为整数,所以必须强制转换。最后返回所求出的平方根。
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1