1、2018 年计算机等级考试二级 C 语言程序题练习 13 及答案解析(总分:100.00,做题时间:60 分钟)一、程序填空题(总题数:1,分数:30.00)给定程序中,函数 fun 的功能是计算 x 所指数组中 N 个数的平均值(规定所有数均为正数),平 均值通过形参返回主函数,将小于平均值且最接近 平均值的数作为函数值返回,在主函数中输出。例如,有 10 个正数:46、30、32、40、6、17、 45、15、48、26,平均值为 30.500000。主函数中 输出m=30。请在程序的下画线处填入正确的内容并把下画 线删除,使程序得出正确的结果。注意:源程序保存在考生文件夹下的 BLANK
2、1.C 中。不得增行或删行,也不得更改程序的结构!给定源程序如下。(分数:30)(1)(分数:10)填空项 1:_(2)(分数:10)填空项 1:_(3)(分数:10)填空项 1:_二、程序改错题(总题数:1,分数:30.00)给定程序 MODI1.C 中函数 fun 的功能是:根据 整型形参 n,计算如下公式的值。例如,若 n=10,则应输出 0.617977。请改正程序中的语法错误,使它能得出正确的 结果。注意:不要改动 main 函数,不得增行或删行, 也不得更改程序的结构!给定源程序如下。(分数:30)(1)(分数:15)_(2)(分数:15)_三、程序设计题(总题数:1,分数:40.
3、00)程序定义了 NxN 的二维数组,并在主函数中 自动赋值。请编写函数 fun,函数的功能是:使数组 右上三角元素中的值乘以 m。例如:若 m 的值为 2, a 数组中的值为则返回主程序后 a 数组中的值 应为注意:部分源程序保存在文件 PROG1.C 中。请勿改动主函数 main 和其他函数中的任何内 容,仅在函数 fun 的花括号中填入编写的若干语句。 给定源程序如下。(分数:40.00)_2018 年计算机等级考试二级 C 语言程序题练习 13 答案解析(总分:100.00,做题时间:60 分钟)一、程序填空题(总题数:1,分数:30.00)给定程序中,函数 fun 的功能是计算 x
4、所指数组中 N 个数的平均值(规定所有数均为正数),平 均值通过形参返回主函数,将小于平均值且最接近 平均值的数作为函数值返回,在主函数中输出。例如,有 10 个正数:46、30、32、40、6、17、 45、15、48、26,平均值为 30.500000。主函数中 输出m=30。请在程序的下画线处填入正确的内容并把下画 线删除,使程序得出正确的结果。注意:源程序保存在考生文件夹下的 BLANK1.C 中。不得增行或删行,也不得更改程序的结构!给定源程序如下。(分数:30)(1)(分数:10)填空项 1:_ (正确答案:*av)解析:从原程序中可以看出代表的是平 均值,而 s/N 表示的就是平
5、均值,因此本空应该填*av。(2)(分数:10)填空项 1:_ (正确答案:i)解析:if 语句来判断找最接近平均值的数,因 而此空应该填 i。(3)(分数:10)填空项 1:_ (正确答案:xj)解析:题目要求将小于平均值且最接近 平均值的数作为函数返回,而 j 表达的是最接 近平均值的数在数组中的下标,因而本空应该 填写 xj。二、程序改错题(总题数:1,分数:30.00)给定程序 MODI1.C 中函数 fun 的功能是:根据 整型形参 n,计算如下公式的值。例如,若 n=10,则应输出 0.617977。请改正程序中的语法错误,使它能得出正确的 结果。注意:不要改动 main 函数,不
6、得增行或删行, 也不得更改程序的结构!给定源程序如下。(分数:30)(1)(分数:15)_正确答案:(float fun(int n)解析:根据函数的返回值可知,函数应定义为 float 型。(2)(分数:15)_正确答案:(for(i=2;i=n;i+)解析:该题中函数 fun 的作用是计算数列前 n 项的和,而数列的组成方式是:第 n 项的分母是 1 加第 n-1 项的值,分子为 1,如果循环累加按 for(i=2;i=n;i+)执行,当输入 n=2 时不会执行,程序将得不到想要的结果,因为循环变量的取值范围应为 2。三、程序设计题(总题数:1,分数:40.00)程序定义了 NxN 的二维数组,并在主函数中 自动赋值。请编写函数 fun,函数的功能是:使数组 右上三角元素中的值乘以 m。例如:若 m 的值为 2, a 数组中的值为则返回主程序后 a 数组中的值 应为注意:部分源程序保存在文件 PROG1.C 中。请勿改动主函数 main 和其他函数中的任何内 容,仅在函数 fun 的花括号中填入编写的若干语句。 给定源程序如下。(分数:40.00)_正确答案:()解析:本程序实现将矩阵中右上半三角元素中的 值乘以 m,使用循环语句遍历数组元素,第 1 个循环用于控制行坐标,第 2 个循环用于控制 列下标。