1、国家二级 C语言机试(操作题)模拟试卷 434及答案与解析 一、程序填空题 1 给定程序中,函数 fun的功能是: 找出形参 s所指字符串中出现频率最高的字母(不区分大小写),并统计出其出现的次数。 例如,形参 s所指的字符串为: abcAbsmaxless,程序执行后的输出结果为: lettera: 3times letters: 3times 请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。 注意:部分源程序在文件 BLANK1 C中。 不得增行或删行,也不得更改程序的结构! 试题程序: #include stdio h #include string h #incl
2、ude ctype h 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 (“nletter c: d timesn“ , i + a
3、,ki ) ; main () char s81; printf (“nEnter a string:nn“) ; gets (s) ; fun (s) ; 二、程序修改题 2 下列给定程序中,函数 fun的功能是:求 S的值。例如,当 k为 10时,函数的值应为1 533852。 请改正程序中的错误,使它能得出正确的结果。 注意:部分源程序在文件 MODIl,C中,不要改动 main函数,不得增行或删行,也不得更改程序的结构! 试 题程序: #include stdlib h #include conio h #include stdio h #include math h /*found*
4、/fun (int k) int n; float s, w,p, q; n=1; s=1 0; while(n =k) w=2 0, lc n; p=w一 1 0; q=w+1 0; s=s*w*w/p/q; n+; /*found*/ return svoid main()system(“CLS“); printf(“ fn“, fun(10); 三、程序设计题 3 请编写函数 fun,其功能是:计算并输出下列多项式的值。例如,当 n=10时,函数值为 0 909091。 注意:部分源程序在文件 PROG1 C中。 请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中
5、填入你编写的若干语句。 试题程序: #include conio h #include stdio h #include stdlib h double fun(int n)void main() FILE*wf; system(“CLS“), printf(“ fn“, fun(10);/*found*/wf=fopen(“out dat“, “w“); fprintf(wf, “ f“,fun(10); fclose(wf); /*found*/ 国家二级 C语言机试(操作题)模拟试卷 434答案与解析 一、程序填空题 1 【正确答案】 (1)*s (2)1 (3)kn 【试 题解析】 本
6、题统计字符串中各字母的个数,建立了一个包括 26个整型变量的数组,用来存储每个字母的个数。 填空 1: isalpha函数的作用是判断当前字符是否为字母, tolower函数的作用是将当前字母转换为小写字母,所以应填 *s。 填空 2:把该字母出现的个数累加到指定的数组中,所以应填 1。 填空 3: max用来记录出现次数最高的字母的出现次数,如果当前该字母出现次数大于最大次数 max,那么把该次数赋值给 max,所以应填 kn。 二、程序修改题 2 【正确答案】 (1)float fun(int k) (2)return s; 【试题解析】 (1)此处为函数定义错误,根据返回值的类型可知函数类型标识符应为 float。 (2)语法错误。 三、程序设计题 3 【正确答案】 double fun (int n) int i; double s =0 0; 级数的和 * / return sf 【试题解析】 本题要求级数的和,由多项式的形式可知,应使用循环语句实现,循环的通项为 1/n(n+1)。本程序首先定义了和变量及循环变量,然后运用一个 for语句求出级数的和,最后将和变量 s返回。