1、二级 C 语言-185 及答案解析(总分:100.00,做题时间:90 分钟)一、程序填空题(总题数:1,分数:30.00)1.给定程序中,函数 fun 的功能是:计算下式前 n 项的和,并作为函数值返回。 (分数:30.00)二、程序改错题(总题数:1,分数:30.00)2.下列给定程序中,函数 fun 的功能是:判断一个整数是否为素数,若是素数返回 1,否则返回 0。 在 main 函数中,若 fun 返回 1 输出 YES,若 fun 返回 0 输出 NO。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构! 试题程序: #
2、includestdlib.h #includeconio.h #includestdio.h int fun(int m) int k=2; while(k=m(m%k) /*found*/ k+ /*found*/ if(m=k) return 1; else return 0; void main() int n; system(“CLS“); printf(“/nPlease enter n:“); scanf(“%d“,n); if(fun(n)printf(“YES/n“); else printf(“NO!/n“); (分数:30.00)_三、程序设计题(总题数:1,分数:40.
3、00)3.请编写函数 fun,其功能是:找出一维整型数组元素中最大的值及其所在的下标,并通过形参传回。数组元素中的值已在主函数中赋予。 主函数中 X 是数组名,n 是 x 中的数据个数,max 存放最大值,index 存放最大值所在元素的下标。 注意:部分源程序给出如下。 请勿改动主函数 main 和其他函数中的任何内容,仅在函数 fun 的花括号中填入你编写的若干语句。 试题程序: #includetime.h #includestdlib.h #includestdio.h void fun(int a,int n,int*max,int*d) void main() int i,x20,
4、max,index,n=10; srand(unsigned)time(NULL); for(i=0;i=n;i+) xi=rand()%50; printf(“%4d“,xi); /*输出一个随机数组*/ printf(“/n“); fun(x,n,max,index); printf(“Max=%5d,Index=%4d/n“,max,index); (分数:40.00)_二级 C 语言-185 答案解析(总分:100.00,做题时间:90 分钟)一、程序填空题(总题数:1,分数:30.00)1.给定程序中,函数 fun 的功能是:计算下式前 n 项的和,并作为函数值返回。 (分数:30.
5、00)解析:1 2*i (-1) 考点 本题关键字有:变量赋初值;for 循环语句;累加计算。 解析 填空 1:k 用作各项的正负号,由于第一项为正,因此给 k 赋初值为 1。 填空 2:由题目中的公式与下一行的表达式可知 t=2*i。 填空 3:由于通项正负交替,因此 k=k*(-1)。二、程序改错题(总题数:1,分数:30.00)2.下列给定程序中,函数 fun 的功能是:判断一个整数是否为素数,若是素数返回 1,否则返回 0。 在 main 函数中,若 fun 返回 1 输出 YES,若 fun 返回 0 输出 NO。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动 main
6、 函数,不得增行或删行,也不得更改程序的结构! 试题程序: #includestdlib.h #includeconio.h #includestdio.h int fun(int m) int k=2; while(k=m(m%k) /*found*/ k+ /*found*/ if(m=k) return 1; else return 0; void main() int n; system(“CLS“); printf(“/nPlease enter n:“); scanf(“%d“,n); if(fun(n)printf(“YES/n“); else printf(“NO!/n“);
7、(分数:30.00)_正确答案:()解析:k+; if(m=k) 考点 本题关键字有:C 语言语法格式;条件表达式中=和=的区别。 解析 (1)k 从 2 开始递增,m 对 k 取余,若不存在使得余数为 0 的数,则 m 为素数。 (2)if(m=K)语句中的赋值语句应为比较运算符。三、程序设计题(总题数:1,分数:40.00)3.请编写函数 fun,其功能是:找出一维整型数组元素中最大的值及其所在的下标,并通过形参传回。数组元素中的值已在主函数中赋予。 主函数中 X 是数组名,n 是 x 中的数据个数,max 存放最大值,index 存放最大值所在元素的下标。 注意:部分源程序给出如下。 请
8、勿改动主函数 main 和其他函数中的任何内容,仅在函数 fun 的花括号中填入你编写的若干语句。 试题程序: #includetime.h #includestdlib.h #includestdio.h void fun(int a,int n,int*max,int*d) void main() int i,x20,max,index,n=10; srand(unsigned)time(NULL); for(i=0;i=n;i+) xi=rand()%50; printf(“%4d“,xi); /*输出一个随机数组*/ printf(“/n“); fun(x,n,max,index);
9、printf(“Max=%5d,Index=%4d/n“,max,index); (分数:40.00)_正确答案:()解析:void fun(int a,int n,int *max,int *d) int i; *max=a0; *d=0; for(i=0;in;i+) /*将最大的元素放入指针 max 所指的单元,最大元素的下标放入指针 d 所指的单元*/ if(*maxai) *max=ai;*d=i; 考点 本题关键字有:查找最大值算法;指针变量。求最大值可用以下语句实现: for(i=0;in;i+) if(*maxai) *max=ai;*d=i; 解析 数组元素通过循环语句遍历,最大值通过 if 语句判断查找,最大值及其下标通过指针型形参传回。
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1