1、国家二级( C语言)机试模拟试卷 371及答案与解析 一、程序填空题( 30分) 1 二、程序修改题( 30分) 2 给定程序 MODll C中函数 fun的功能是:求 s的值。 例如,当 k为 10时,函数值应为: 1 533852。 请改正程序中的错误,使程序能输出正确的结果。 注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构 !#include #include /*found*/void fun(int k)int n; double s, w, p, q; n = 1; s = 1.0; while (n 三、程序设计题( 40分) 3 请编写一函数 fun,它的功
2、能是:计算并输出给定整数 n的所有因子 (不包括 l与n自身 )之和。规定 n的值不大于 1000。 例如,在主函数中从键盘给 n输入的值为 856,则输出为: sum=763。 注意:部分源程序在文件 PROGl C中。 请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。 #include int fun(int n) NONO() /* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。 */ FILE *rf, *wf ; int i, n, sum ; rf = fopen(“in.dat“,“r“); wf =
3、fopen(“out.dat“,“w“); for(i = 0 ; i =0;_2_)”循环变量 j从 N-1开始,到 0结束,共循环 N次,故 j每次减一,第三空处是 “j-”。 第三空:最后一个循环将临时数组中的元素成为最后一列,即 tjN-1=rj,故第三空处应为 “j”。 二、程序修改 题( 30分) 2 【正确答案】 double fun(int k) return s; 【试题解析】 ( 1)第一个标识下 fun函数的定义缺少返回类型,所以将 “void fun(int k)”改为 “double fun(int k)”。 ( 2)第二个标识下返回语句没有分号结束。所以,第二个标识下 “return s”应该改为 “return s;”。 三、程序设计题( 40分) 3 【正确答案】 int s=0, i; for(i=2; in; i+)if(n%i=0)s+=i; return s; 【试题解析】 ( 1)首先,在 for循环过程中,利用 if判断语句判断由 2到 n-1所有数字中,选择为因子的数。 ( 2)如果是因子,那么对其进行累计求和。