1、二级 C 语言-365 及答案解析(总分:100.00,做题时间:90 分钟)一、程序填空题(总题数:1,分数:30.00)1.函数 fun 的功能是:计算 (分数:30.00)二、程序改错题(总题数:1,分数:30.00)2.下列给定程序中,函数 fun 的功能是:找出 100n(不大于 1000)三个位上的数字都相等的所有整数,把这些整数放在 s 所指的数组中,个数作为函数值返回。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构。 试题程序: #includestdio.h #define N 100 int fun(int
2、*s,int n) int i,j,k,a,b,c; j=0; for(i=100;in;i+) /*found*/ k=n; a=k%10; k/=10; /*found*/ b=k/10; c=k/10; if(a=b return j; main() int aN,n,num=0,i; do printf(“/nEnter n(=1000):“); scanf(“%d“, while(n1000); num=fun(a,n); printf(“/n/nThe result:/n“); for(i=0;inum;i+) printf(“%5d“,ai); printf(“/n/n“); (
3、分数:30.00)三、程序设计题(总题数:1,分数:40.00)3.请编写函数 fun,其功能是:计算并输出给定 10 个数的方差。 其中: (分数:40.00)_二级 C 语言-365 答案解析(总分:100.00,做题时间:90 分钟)一、程序填空题(总题数:1,分数:30.00)1.函数 fun 的功能是:计算 (分数:30.00)解析:(1)1.0 (2)1 (3)i 解析 填空 1:本题要求给 double 型变量 t 赋初值,从 for 循环中我们知道,t 用来存放累乘的结果,因此 t 的初值应该为 1。 填空 2:考查 for 循环变量的范围,注意本题要求计算 f(x)的前 n
4、项,即计算 ,所以循环变量 i应从 1 递增至 n-1,因此此空应填 1。 填空 3:t 用来存放每次循环增量,分析公式可知,后一项总是在前一项的基础上乘以一个 二、程序改错题(总题数:1,分数:30.00)2.下列给定程序中,函数 fun 的功能是:找出 100n(不大于 1000)三个位上的数字都相等的所有整数,把这些整数放在 s 所指的数组中,个数作为函数值返回。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构。 试题程序: #includestdio.h #define N 100 int fun(int*s,int n
5、) int i,j,k,a,b,c; j=0; for(i=100;in;i+) /*found*/ k=n; a=k%10; k/=10; /*found*/ b=k/10; c=k/10; if(a=b return j; main() int aN,n,num=0,i; do printf(“/nEnter n(=1000):“); scanf(“%d“, while(n1000); num=fun(a,n); printf(“/n/nThe result:/n“); for(i=0;inum;i+) printf(“%5d“,ai); printf(“/n/n“); (分数:30.00
6、)解析:(1)k=i; (2)b=k%10; 解析 (1)i 是当前要被判断的数,因为 i 是循环变量,所以将 i 的值赋给 k 再进行运算。 (2)b 是存放十位上的数,但前面已经除以了一个 10,即原数的十位已经变成了个位,所以这里用求余就可以了。三、程序设计题(总题数:1,分数:40.00)3.请编写函数 fun,其功能是:计算并输出给定 10 个数的方差。 其中: (分数:40.00)_正确答案:()解析:double fun(double x10) double x1=0.0,s=0.0; int i; for(i=0;i10;i+) x1=x1+xi; x1=x1/10; /*求 10 个数的平均值*/ for(i=0;i10;i+) s=s+(xi-x1)*(xi-x1); return sqrt(s/10); /*求 10 个数的方差*/ 解析 这是一道求公式的值的题目,程序中第 1 个循环用来完成求 10 个数的总和,接着再用x1x1/10 来求出平均值。第 2 个循环用来求累加和的值,最后将累加和的平方根返回,注意 sqrt 函数的应用。