1、国家二级 C语言机试(操作题)模拟试卷 434及答案解析(总分:6.00,做题时间:90 分钟)一、程序填空题(总题数:1,分数:2.00)1.给定程序中,函数 fun的功能是: 找出形参 s所指字符串中出现频率最高的字母(不区分大小写),并统计出其出现的次数。 例如,形参 s所指的字符串为:abcAbsmaxless,程序执行后的输出结果为: lettera:3times letters:3times 请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。 注意:部分源程序在文件 BLANK1C 中。 不得增行或删行,也不得更改程序的结构! 试题程序: #include st
2、dioh #include stringh #include ctypeh void fun (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 kn) max= 【3】 ; printf (“/nAfter count :/n“) ; for (i=0; i 26;i +) if (ki =max) printf (“/n
3、letter /c/: d times/n“ , i + a,ki ) ; main () char s81; printf (“/nEnter a string:/n/n“) ; gets (s) ; fun (s) ; (分数:2.00)_二、程序修改题(总题数:1,分数:2.00)2.下列给定程序中,函数 fun的功能是:求 S的值。 (分数:2.00)_三、程序设计题(总题数:1,分数:2.00)3.请编写函数 fun,其功能是:计算并输出下列多项式的值。 (分数:2.00)_国家二级 C语言机试(操作题)模拟试卷 434答案解析(总分:6.00,做题时间:90 分钟)一、程序填空题(
4、总题数:1,分数:2.00)1.给定程序中,函数 fun的功能是: 找出形参 s所指字符串中出现频率最高的字母(不区分大小写),并统计出其出现的次数。 例如,形参 s所指的字符串为:abcAbsmaxless,程序执行后的输出结果为: lettera:3times letters:3times 请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。 注意:部分源程序在文件 BLANK1C 中。 不得增行或删行,也不得更改程序的结构! 试题程序: #include stdioh #include stringh #include ctypeh void fun (char*s)
5、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 kn) max= 【3】 ; printf (“/nAfter count :/n“) ; for (i=0; i 26;i +) if (ki =max) printf (“/nletter /c/: d times/n“ , i + a,ki ) ; main () char s81;
6、printf (“/nEnter a string:/n/n“) ; gets (s) ; fun (s) ; (分数:2.00)_正确答案:(正确答案:(1)*s (2)1 (3)kn)解析:解析:本题统计字符串中各字母的个数,建立了一个包括 26个整型变量的数组,用来存储每个字母的个数。 填空 1:isalpha 函数的作用是判断当前字符是否为字母,tolower 函数的作用是将当前字母转换为小写字母,所以应填*s。 填空 2:把该字母出现的个数累加到指定的数组中,所以应填 1。 填空3:max 用来记录出现次数最高的字母的出现次数,如果当前该字母出现次数大于最大次数 max,那么把该次数
7、赋值给 max,所以应填 kn。二、程序修改题(总题数:1,分数:2.00)2.下列给定程序中,函数 fun的功能是:求 S的值。 (分数:2.00)_正确答案:(正确答案:(1)float fun(int k) (2)return s;)解析:解析:(1)此处为函数定义错误,根据返回值的类型可知函数类型标识符应为 float。 (2)语法错误。三、程序设计题(总题数:1,分数:2.00)3.请编写函数 fun,其功能是:计算并输出下列多项式的值。 (分数:2.00)_正确答案:(正确答案:double fun (int n) int i; double s =0 0; 级数的和 * / return sf )解析:解析:本题要求级数的和,由多项式的形式可知,应使用循环语句实现,循环的通项为 1/n(n+1)。本程序首先定义了和变量及循环变量,然后运用一个 for语句求出级数的和,最后将和变量 s返回。