1、二级 C 语言-311 (1)及答案解析(总分:100.00,做题时间:90 分钟)一、程序填空题(总题数:1,分数:30.00)1.请补充函数 proc(),该函数的功能是判断一个数的十位数字和百位数字之和是否等于其个位上的数字,是则返回“yes!”,否则返回“no!” 注意:部分源程序给出如下。 请勿改动 main()函数和其他函数中的任何内容,仅在函数 proc()的横线上填入所编写的若干表达式或语句。 试题程序: #includestdlib.h #includestdio.h #includeconio.h char*proc(int n) int g, s, b; g=n%10;
2、s=n/10%10; b= 1; if(s+b)=g) return 2; else return 3; void main() int num=0; system(“CLS“); printf(“*Input data*/n“); scanf(“%d“, printf(“/n/n/n“); printf(“*The result*/n“); printf(“/n/n/n%s“, proc(num); (分数:30.00)二、程序改错题(总题数:1,分数:40.00)2.下列给定程序中,函数 proc()的功能是:计算 n!。例如,若输入:6,则输出:6!=720.000000。 请修改程序中
3、的错误,使它能得出正确的结果。 注意:不要改动 main()函数,不得增行或删行,也不得更改程序的结构。 试题程序: #includestdio.h #includeconio.h double proc(int n) double result=1.0; /*found* if n=0 return 1.0; if(n1 void main() int n; printf(“Input N:“); scanf(“%d“, printf(“/n/n%d!=%1f/n/n“, n, proc(n); (分数:40.00)_三、程序设计题(总题数:1,分数:30.00)3.请编写一个函数 int
4、proc(int*s, int t, int*k),用来求出数组的最小元素在数组中的下标并存放在k 所指的存储单元中。 例如,输入如下整数: 273 934 453 624 89 342 111 831 527 246 则输出结果为 4,89。 注意:部分源程序给出如下。 请勿改动 main()函数和其他函数中的任何内容,仅在函数 proc()的花括号中填入所编写的若干语句。 试题程序: #includestdlib.h #includeconio.h #includestdio.h void proc(int*s, int t, int*k) void main() int arr10=27
5、3, 934, 453, 624, 89, 342, 111, 831, 527, 246, k; system(“CLS“); proc(arr, 10, printf(“%d, %d/n“, k, arrk); (分数:30.00)_二级 C 语言-311 (1)答案解析(总分:100.00,做题时间:90 分钟)一、程序填空题(总题数:1,分数:30.00)1.请补充函数 proc(),该函数的功能是判断一个数的十位数字和百位数字之和是否等于其个位上的数字,是则返回“yes!”,否则返回“no!” 注意:部分源程序给出如下。 请勿改动 main()函数和其他函数中的任何内容,仅在函数 p
6、roc()的横线上填入所编写的若干表达式或语句。 试题程序: #includestdlib.h #includestdio.h #includeconio.h char*proc(int n) int g, s, b; g=n%10; s=n/10%10; b= 1; if(s+b)=g) return 2; else return 3; void main() int num=0; system(“CLS“); printf(“*Input data*/n“); scanf(“%d“, printf(“/n/n/n“); printf(“*The result*/n“); printf(“/
7、n/n/n%s“, proc(num); (分数:30.00)解析:n/100 yes! no!解析 由函数 proc()可知,变量 b 存放的是整数 n 百位上的数,因此,第一处填“n/100”;根据题目要求,十位数与百位数之和等于其个位数返回 yes,因此,第二处填“yes!”;十位数与百位数之和不等于其个位数返回 no,因此,第三处填“no!”。二、程序改错题(总题数:1,分数:40.00)2.下列给定程序中,函数 proc()的功能是:计算 n!。例如,若输入:6,则输出:6!=720.000000。 请修改程序中的错误,使它能得出正确的结果。 注意:不要改动 main()函数,不得增
8、行或删行,也不得更改程序的结构。 试题程序: #includestdio.h #includeconio.h double proc(int n) double result=1.0; /*found* if n=0 return 1.0; if(n1 void main() int n; printf(“Input N:“); scanf(“%d“, printf(“/n/n%d!=%1f/n/n“, n, proc(n); (分数:40.00)_正确答案:()解析:(1)错误:if n=0 正确:if(n=0) (2)错误:result*=n- 正确:result=n*proc(n-1);
9、 解析 根据 C 语言的语法规则,语句 if 的条件必须在括号内,因此,“if n=0”应改为“if(n=0)”。该程序中求整数 n 的阶乘是使用递归调用来实现的,因此,“result*=n-”应改为“result=n*proc(n-1)”。三、程序设计题(总题数:1,分数:30.00)3.请编写一个函数 int proc(int*s, int t, int*k),用来求出数组的最小元素在数组中的下标并存放在k 所指的存储单元中。 例如,输入如下整数: 273 934 453 624 89 342 111 831 527 246 则输出结果为 4,89。 注意:部分源程序给出如下。 请勿改动
10、main()函数和其他函数中的任何内容,仅在函数 proc()的花括号中填入所编写的若干语句。 试题程序: #includestdlib.h #includeconio.h #includestdio.h void proc(int*s, int t, int*k) void main() int arr10=273, 934, 453, 624, 89, 342, 111, 831, 527, 246, k; system(“CLS“); proc(arr, 10, printf(“%d, %d/n“, k, arrk); (分数:30.00)_正确答案:()解析:int proc(int*s, int t, int*k) int i, j; j=0; j /是为了求得最小数的下标的 for(i=0; it; i+) if(sjsi) /从 if 中,我们可知当后面的数比前面的小时,把小的元素的下标放到 j 中 j=i; *k=j; /最后把最小元素的下标赋给*k,使其带回到主函数中 解析 要求出数组中最小的数,需要比较数组中的每一个元素。将最小的元素的下标存放在变量 k 中,通过形参返回到主函数中。
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1