1、国家二级 C语言机试(操作题)模拟试卷 30及答案与解析 一、程序填空题 1 给定程序中,函数 fun的功能是:把形参 S所指字符串中下标为奇数的字符右移到下一个奇数位置,最右边被移出字符串的字符绕回放到第一个奇数位置,下标为偶数的字符不动 (注:字符串的长度大于等于 2)。例如,形参 S所指的字符串为:abcdefgh,执行结果为: ahcbedgf。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的 BLANKl C中。 不得增行或删行 ,也不得更改程序的结构 ! #include void fun(char *s) int i, n
2、, k; char c; n=0 ; Eor(i=0; si!= 0, i+) n+; /*found*/ if(n 2=0)k=n一 _1_ ; else k=n一 2; /*found*/ c=_2_; for(i=k一 2; i=1; 2=22)si+2= si; /*found*/ s1=_3_ ; main() char s80=“abodefgh”; printE(“ nThe origina2 string is : s n”, s); fun(s); printf(“ nThe result is: s n”, s); 二、程序修改题 2 给定程序 MODll C中函数 fun
3、的功能是:从 n(形参 )个学生的成绩中统计出低于平均分的 学生人数,此人数由函数值返回,平均分存放在形参 aver所指的存储单元中。 例如,若输入 8名学生的成绩: 80 5 60 72 90 598 51 5 88 64 则低于平均分的学生人数为: 4(平均分为: 75 5625)。 请改正程序中的错误,使它能统计出正确的结果。 注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构 ! #include #define N 20 int fun (float *s, int n, float *averl float aVe, t=0 0; int count=0, k, i
4、; for (k=0; k #define N 12 typedef struct char num10; double s; STREC; double fun(STREC *a, STREC *b, int *n) main() STREC sN=“GA05”, 85), “GA03”, 76), “GA02”, 69), “GA04”, 85),“GA01”, 91, “GA07”, 72, “GA08”, 64, “GA06”, 87, “GA09”,60), “GA11”, 79, “GA12”, 73, “GA10”, 90); STREC hN, t; FILE*out; int i, j, n; double ave; ave=fun(s, h, return t; 【试题解析】 该程序功能是把高于或等于平均分的 学生数据放在 b所指的数组中,高于等于平均分的学生人数通过形参 n传回,平均分通过函数返回值返回。解题过程首先求得平均分,然后将所有成绩与平均分进行比较,如果大于或等于平均分,存入指定数组。