1、二级 C语言机试 10及答案解析(总分:100.00,做题时间:90 分钟)一、B填空题/B(总题数:1,分数:30.00)1.在主函数中,从键盘输入若干个数放入数组 x中,用 0结束输入但不计入数组。下列给定程序中,函数fun()的功能是:输出数组元素中小于平均值的元素。请补充函数 fun()。 例如:数组中元素的值依次为1,2,2,12,5,15,则程序的运行结果为 1,2,2,5。 注意:部分源程序给出如下。 请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun()的横线上填入所编写的若干表达式或语句。 试题程序:#includeconioh #includestdioh v
2、oid fun(U 【1】 /U,int n) double sum=0.0; double average=0.0; int i=0; for(i=0;in;i+) U 【2】 /U; average=U 【3】 /U; for(i=0;in;i+) if(xiaverage) if(i%5=0) printf(“/n“);printf(“%d/“,xi); main() int x1000; int i=0; clrscr(); printf(“/nPlease enter some data(end with 0):“); do scanf(“%d“, fun(x,i-1);(分数:30
3、.00)填空项 1:_二、B改错题/B(总题数:1,分数:30.00)2.下列给定程序中,函数 fun()的功能是:根据整型形参 n,计算如下公式的值。A 1=1,A 2=1/(5+A1),A 3=1/(5+A2),A n=1/(5+A(n-1)例如,若 n=l0,则应输出 0.192582。请改正程序中的错误,使它能得到正确结果。注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include conioh#include stdiohfloat fun(int n)/*found*/int A=1;int i;/*found*/for(i=1;i=n;i+)A
4、=1.0/(5+A);return A;main()int n;clrscr();printf(“/nPlease enter n:“);scanf(“%d“, fun(x,i-1);(分数:30.00)填空项 1:_ (正确答案:1 int x 2 sum+=xi 3 sum/n)解析:解析 填空 1:由主函数 main()调用 fun()函数的格式,可知,函数 fun()的第个参数为整型数组。填空 2:为了求出平均值,首先要对数组中的元素求累加和。填空 3:数组中元素的累加和除以元素个数,得到所有元素的平均值。二、B改错题/B(总题数:1,分数:30.00)2.下列给定程序中,函数 fun
5、()的功能是:根据整型形参 n,计算如下公式的值。A 1=1,A 2=1/(5+A1),A 3=1/(5+A2),A n=1/(5+A(n-1)例如,若 n=l0,则应输出 0.192582。请改正程序中的错误,使它能得到正确结果。注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include conioh#include stdiohfloat fun(int n)/*found*/int A=1;int i;/*found*/for(i=1;i=n;i+)A=1.0/(5+A);return A;main()int n;clrscr();printf(“/n
6、Please enter n:“);scanf(“%d“,i+) 解析 错误 1:A 为实型数,应定义为 float类型。错误 2:由题意,A1=1,从 A2开始,An=l/(5+A(n-1),所以循环应从 2 开始。三、B编程题/B(总题数:1,分数:40.00)3.请编写函数 fun(),它的功能是计算:s(1-ln(1)-ln(2)-ln(3)-ln(m) 2s作为函数值返回。在 C语言中可调用 log(n)函数求 ln(n)。log 函数的引用说明是 double log(double x)。例如,若 m的值为 15,则 fun()函数值为 723.570801。注意:部分源程序给出如
7、下。请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入所编写的若干语句。试题程序:#include conioh#include stdioh#include mathh double fun(int m)main()clrscr();printf(“%f/n“,fun(15);(分数:40.00)_正确答案:()解析:double fun(int m) int i; double s=1.0; for(i=1;i=m;i+) s=s-log(i); /*计算s=1-ln(1)-ln(2)-ln(3)-ln(m)*/ return (s*s); /*对 s求平方并返回*/ 解析 首先,题目要求计算 1依次减去 1到 M的对数,可用从 1到 M的循环,每次循环都减一个数的对数。该题需要注意,log()函数的形式参数应浩如烟海 double型变量,用于循环的基数变量为整数,需要进行强制转换。最后在返回的时求平方。
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1