1、国家二级( C语言)机试模拟试卷 232及答案与解析 一、程序填空题( 30分) 1 给定程序中,函数 fun的功能是:找出形参 s所指字符串中出现频率最高的字母(不区分大小写 ),并统计出其出现的次数。 例如,形参 s所指的字符串为: abcAbsmaxless,程序执行后的输出结果为: lettera;: 3 times letters: 3 times 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的 BLANKl C中。 不得增行或删行,也不得更改程序的结构 ! #include #include #include void fu
2、n(char *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 #define N 20 int fun(int n,int *a) int i,j,k,sum; /*found*/ sum=j=0; for(k=3,i=0;i #define M 4 int fun(int aM) main() int arr2M=5, 8, 3, 45, 76, -4, 12, 8
3、2; void NONO(); printf(“max= d n“, fun(arr); NONO(); void NONO() ( *本函数用于打开文件。输入数据,调用函 数,输出数据,关闭文件。 * FILE*wf ; int arrM=5, 8, 3, 90, 76,一 4, 12, 82; wf=fopen(“out dat“, “w“); tpprintf(wf, “max= d n“, fun(arr); fclose(wf); 国家二级( C语言)机试模拟试卷 232答案与解 析 一、程序填空题( 30分) 1 【正确答案】 *s 1 kn 【试题解析】 第一空: “ch=tol
4、ower(_1_); n=ch-a;”可知统一将字符 *s转化成小写字母,然后和字母 “a”比较,因此第一空处应为 “*s”。 第二空: “kn+=_2_;”是统计字符 “*s”出现的次数, “ch-a”得到了应存放的数组元素的下标位置 n, kn元素加 1标识该字符在上一次出现的基础上又出现了一次,故第二空处应为 “1”。 第三空: “if(maxkn) max=_3_;”如果 max比 kn还小,说明 kn代表的字符出现的次数更多,因此 max值应更新为 kn的值,故第三处应为 “kn”。 二、程序修改题( 30分) 2 【正确答案】 sum=0;j=0; if(sum%4=2) 【试题解
5、析】 ( 1)根据题意第一标识下 “sum=j=0;”是给 sum和 j赋初值 0,故应改成 “sum=0;j=0;”。 ( 2)第二个标识下的 if语句是根据题干要求,累加和被 4除后余 2,而原题是将2赋值给 sum%4。所以,第二个标识下 “if(sum%4=2)” 应该改为“if(sum%4=2)” 。 三、程序设计题( 40分) 3 【正确答案】 int i, j, max=a00; for(i=0; i2; i+) for(j=0; jM; j+) if(maxaij)max=aij; return max; 【试题解析】 进入 fun函数,根据前面的分析: (1)首先设置变量 max,用来记录最大值,赋予该变量初值。 (2)遍历整个数组,将每一个元素与 max进行比较,若大于 max,则将此新值 存入 max。当数组遍历完成后, max中存放的即为数组的最大元素。 (3)使用 return语句返回 max数值。