1、国家二级( C语言)机试模拟试卷 264及答案与解析 一、程序填空题( 30分) 1 给定程序通过定义并赋初值的方式,利用结构体变量存储了一名学生的学号、姓名和 3门课的成绩。函数 fun的功能是将该学生的各科成绩都乘以一个系数 a。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的 BLANKl C中。 不得增行或删行,也不得更改程序的结构 ! #include typedef struct int num; char name9; float score3; STU; void show(STU tt) int i; printf(“
2、%d %s : “,tt.num,tt.name); for(i=0; i【 2】 *=a; main() STU std= 1,“Zhanghua“,76.5,78.0,82.0 ; float a; printf(“nThe original number and name and scores :n“); show(std); printf(“nInput a number : “); scanf(“%f“, /*found*/ modify(【 3】 ,a); printf(“nA result of modifying :n“); show(std); 二、程序修改题( 30分) 2
3、 给定程序 MODII C中 fun函数的功能是:求出以下分数序列的前 n项之和。 2/1, 3/2, 5/3, 8/5, 13/8, 21/13, 和值通过函数值返回 main函数。 例如,若 n=5,则应输出: 8 391667。 请改正程序中的错误,使它能得出正确的结果。 注 意:不要改动 main函数,不得增行或删行,也不得更改程序的结构 ! #include *found* fun(int n) int a=2, b=1, c, k; double s=0 0; for (k=1; k #define M 3 #define N 4 void fun (int ttMN, int p
4、pN) NONO() /* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。 */ int i, j, k, m, tMN, pN ; FILE *rf, *wf ; rf = fopen(“in.dat“,“r“); wf = fopen(“out.dat“,“w“); for(m = 0 ; m scorei *=a;”。 第三空: modify函数的第一个参数是指针,故调用该函数时第一个参数应该是变量 std的地址 “ for(i=0; ittji) min=ttji; k=j; ppi=ttki; 【试题解析】 进入 fun函数,根据前面的分析: ( 1)依次访问每一列的元素。 ( 2)在对每一列的访问过程中选出最小数。 ( 3)将选出的最小数依次放到一维数组中。