1、国家二级 C+机试(操作题)模拟试卷 177及答案与解析 一、基本操作题 1 给定程序中,函数 fun的功能是:找出形参 s所指字符串中出现频率最高的字母(不区分大小写 ),并统计出其出现的次数。 例如,形参 s所指的字符串为: abcAbsmaxless,程序执行后的输出结果为: lettera: 3times letters: 3times 请在程序的中括号处填入正确的内容并把中括号删除,使程序得出正确的结果。 注意:部分源程序在文件 BLNK1 C中。 不得 增行或删行,也不得更改程序的结构 ! 试题程序: #include #include #include void fun(char
2、*s) int k26=0), n, i, max=0; char ch; while(*s) if(isalpha(*s) *found* ch=tolower(【 1】 ); n=ch-a; *found* kn+=【 2】; s+; *found* if(max #include void fun(char t) char c ; int i, j; *found* for(i=strlen(t); i; i-) for(j=0; j2)。 例如,若输入 9 9 8 5 7 6 8 5 9 3 9 5 8 9 7 88 6 8 4十个得分,则输出结果为: 8 687500。 注意:部分源
3、程序存在 PROG1 C中,请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入所编写的若干语句。 试题程序: #include void NONO(); double fun(double a, int n) main() double b10, r; int i; printf(“输入 10个分数放入 b数组中: “); for(i=0; i0; i-) (2)if(tj tj+1) 【试题解析】 (1)本题是利用选择法对数组元素进行比较排序。所谓选择法,是依次用当前取得的元素和其后面的元素进行比较,在第一个元素和其后面的元素顺次比较时,可以借助中间变量来对两个数
4、进行交换,要保证第一个元素始终存放数 组中的最大数,以后依次挑选出次大数,这样最终的数组就是有序的。 strlen函数所求得的字符串长度包括字符串结束符,所以要减 l。 (2)这里是一个分析逻辑错误,题中要求按升序排序,所以应改为 if(tjtj+1)。 三、综合应用题 3 【正确答案】 double fun(double a, int n) double sum=0, max, min; int i; max: min=a0; for(i=0; iai)min=ai; sum=sum max min; return(sum (n一 2); 【试题解析】 设定三个变量 sum存放合值, max存放最大值, min存放最小值。 max和 rain都赋为数组中第一个元素的值。利用循环将数组中元素累加到sum中,并找出最大值和最小值, sum值减去最大值和最小值。函数返回 sum除以元素个数一 2得平均值。