1、国家二级( C语言)机试模拟试卷 374及答案与解析 一、程序填空题( 30分) 1 给定程序中,函数 fun的功能是计算下式 直到,并把计算结果作为函数值返回。 例如,若形参 e的值为 1e-3,函数的返回值 2 985678。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的 BLANKl C中。 不得增行或删行,也不得更改程序的结构 !#include double fun(double e) int i, double s, x;*found* s=0; i= 【 1】; x=1 0; while(xe) *found* 【 2】
2、;*found* x=(2 0*i 1) ( 3 )*(2 0*i); s=s+x; return s; main() double e=le一 3; printf(“ nThe result is: fin“,fun(e); 二、程序修改题( 30分) 2 给定程序 MODll C中函数 fun的功能是:从低位开始取出长整型变量 s中奇数位上的数,依次构成一个新数放在 1中。高位仍在高位,低位仍在低位。例如,当s中的数为: 7654321时, t中的数为: 7531。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构 ! 三、程序
3、设计题( 40分) 3 学生的记录由学号和成绩组成, N名学生的数据已在主函数中放入结构体数组 s中,请编写函数 fun,它的功能是:按分数的高低排列学生的 记录,高分在前。 注意 部分源程序给出如下。请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入所编写的若干语句。 试题源程序 #include stdio.h #define N 16 typedef struct char numi0; int s; STREC; int fun(STREC a) main() STREC sN= “GA005“, 85, “GA003“, 76, “GA002“, 69,
4、“GA004“, 85, “GA001“, 91, “GA007“, 72, “GA008“, 64, “GA006“, 87, “GA015“, 85, “GA013“, 91, “GA012“, 64, “GA014“, 91, “GA011“, 66, “GA017“, 64, “GA018“, 64, “GA016“, 72 ; int i; FILE *out; fun(s); printf(“The data after sorted:n“); for(i=0;i N; i+) if(i)%4=0) printf(“n“); printf(“%s%4d“, si. num, si.
5、s); printf(“n“); 国家二级( C语言)机试模拟试卷 374答案与解析 一、程序填空题( 30分) 1 【正确答案】 (1)0 (2)i+ (3)2 0*i 【试题解析】 第一空: “return s; “可知 s是返回值, s的初始化值为 0,故循环累加是从第一项开 始累加的,在循环体 “ 2: x=(2 0*i-1) (【 3】 )*(2 0*i);s=s+x; “中,变量 i没有递增,故第二空处应为 “i+“。当 x是级数的第一项时,i=1(i+之后变成 1),故 i的初始化值为 0,因此第一空处应为 “0“。 第二空:由上面的分析可知,第二空处应为 “i+“。 第三空:
6、“x=(2 0*i-1) (【 3】 )*(2 0*i); “是求级数项的值,根据题干给出的级数项特征可知,级数项的分母是 (2 0*i)的平方,故第三空处应为 “2 0*i“。 二、程序修改题( 30分) 2 【正确答案】 (1)void fun (10ng s, long *t) (2)s1 s1*10; 【试题解析】 本题中函数的功能是依次取出奇数位上的数。该题的解题思路主要是找出数字中的奇数位上的数。 三、程序设计题( 40分) 3 【正确答案】 #include stdi0.h #define N 16 typedef struct char num10; int s; STREC; int fun(STREC a) STREC tmp; int i, j; for(i=0; i N; i+) for(j=i+1; j N; J+) if(ai.s aj.S) tmp=ai; ai=aj; aj=tmp;