1、国家二级( C语言)机试模拟试卷 230及答案与解析 一、程序填空题( 30分) 1 请补充 fun()函数,该函数的功能是:把一个整数转换成字符串,并倒序保存在字符数组 s中。例如,当 n=123时, s=“321“。 注意:部分源程序给出如下。 请勿改动 main()函数和其他函数中的任何内容,仅在 main()函数的横线上填人所编写的若干表达式或语句。 试题程序: #include #include #define M 80 char sM; void fun(10ng int n) int j=0; while(【 1】 ) sj=【 2】; n =10; j+; 【 3】; void
2、 main() long int n=1234567; printf(“The origial data n“); printf(“n= ld“, n); fun(n); printf(“ n s“, s); 二、程序修改题( 30分) 2 给定程序 MODll C中函数 fun的功能是:根据整 型形参 n,计算如下公式的值。 例如,若 n=10,则应输出: 0 617977。 请改正程序中的语法错误,使它能得出正确的结果。 注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构 !#include*found* int fun(int n) float A=1, int i ;
3、*found* for (i=2; i 三、程序设计题( 40分) 3 编 写函数 fun,它的功能是:计算并输出下列级数和: 例如,当 n=10时,函数值为: 0 909091。 注意:部分源程序在文件 PROGI C文件中。 请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。 #include double fun(int n)main() /* 主函数 */void NONO (); printf(“%fn“, fun(10); NONO();void NONO ()/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ F
4、ILE *fp, *wf ; int i, n ; double s ; fp = fopen(“in.dat“,“r“); wf = fopen(“out.dat“,“w“); for(i = 0 ; i 0【 2】 n 10+0【 3】 sj=0 【试题解析】 该题中函数功能是把一个整数转换成字符串,并倒序保存在字符数组 s中。本题解题思路是在循环中对字符串进行截取,并把截取后的字符串进行转换。 第一空:循环截取 n的每一位,所以循环条件是 n大于 0,即第一空填 “n0”。 第二空:循环中截取当前数字的最低一位并进行数字到字符的转换,数字字符与对应的整数 ASC 码相差是 48,等于字符
5、 0的 ASC 码,所以第二空填 “n10+0” 。 第三空:将截取后的字符放入新串,在新串尾部加结束标志,所以第三空填“sj=0”。 二、程序修改题( 30分) 2 【正确答案】 (1)float fun(int n) (2)for(i=2; i=n; i+) 【试题解析】 (1)其中 fun函数中的 “float A=1; “和 “return A; “语句说明 fun函数具有 float返回值,所以将 “int fun(int n)“改为 “float fun(hatn)“。 (2)根据题干中给出的公式,可以知道第 11项的分母中 A是第 n-1项,所以第二个标识下的 “for(i=2; in; i+)“循环中应该是 2到 n, “for(i=2; in; i+)“应该改为 “for(i=2; i=n; i+)“。 三、程序设计题( 40分) 3 【正确答案】 double s=0.0; int i; for(i=1; i=n; i+) s=s+1.0/(i*(i+1); return s; 【试题解析】 ( 1)根据题干中给出的数列,推出每一项是 1.0/(i*(i+1)。 ( 2)在循环中求得每一项,然后对其进行累加求和。