1、国家二级( C语言)机试模拟试卷 304及答案与解析 一、程序填空题( 30分) 1 给定程序中,函数 fun的功能是:将 a所指 43矩阵中第 k行的元素与第 0行元素交换。 例如,有下列矩阵: 若 k为 2,程序执行结果为: 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的 BLANKl C中。 不得增行或删行,也不得更改程序的结构 l#include #define N 3#define M 4*found* void fun(int(*a)N, int【 1】 ) int i,temp; *found* for(i=0; i do
2、uble fun(int n) double result=1 0; *found* if n=0 reLurn 1 0; while(n1&n170) *found* result *=n reLurn result; main() int n; printf(“Input N: “); scanf(“ d“, &n); printf(“ n n d!= lf n n“, n, fun(n); 三、程序设计题( 40分) 3 请编写函数 fun,其功能是:计算并输出下列多项式的值:例如,在主函数中从键盘给 n输入 50后,输出为:s=1 718282。 注意:要求 n的值大于 1但不大于 1
3、00。 部分源程序在文件PROGl C中。 请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。 #inoludedouble fun(int n)NONO() *请在此函数内打开文件,输入测试数据,调用 fun函数,输出数据,关闭文件。 * FILE*rf, *wf; int n, i; double s; rf=fopen(“in dat“, “r“); wf=fopen(“out dat“, “w“); for(i=0; i 国家二级( C语言)机试模拟试卷 304答案与解析 一、程序填空题( 30分) 1 【正确答案】 (1)k (2)N (
4、3)aki 【试题解析】 第一空:由 “aki=temp; “可知, k是 fun函数的第二个参数名,故第一空处应为 “k“。 第二空:题干要求把第 k行的元素与第 0行元素交换,每行元素有 N个,故循环条件是 iN,即第二空处应为 “N“。 第三空:由审题分析可知,这里是将 k行元素放到 0行元素位置,故第三空是“aki“。 二、程序修改题( 30分) 2 【正确答案】 (1)if (n=0) (2)result*=n一一; 【试题解析】 (1)错误标识符下的 if语句的条件表达式,根据 C语言的基本语法条件,表达式应该用括号括起来,所以将 “ifn=0“改为 “if(n=0)“。 (2)在 C语言中,语句以分号 “; “结束,在第二标识下 “result*=n-“没有分号结束符,显然应改成 “result*=n-; “。 三、程序设计题( 40分) 3 【正确答案】 double s=0, t=1; int i; for(i=1; i=n; i+) t *=i; s+=1 t; return s; 【试题解析】 (1)根据题干中给出的数列,推出每一项分母是在前一项分母的基础上乘当前项数。第 n项的项数为 n。 (2)在循环中求得每一项,然后对其进行累加求和。 第 39套试题答案及详解