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