1、国家二级 C语言机试(操作题)模拟试卷 641及答案与解析 一、程序填空题 1 使用 VC+2010打开考生文件夹下 blank1中的解决方案。此解决方案的项目中包含一个源程序文件 blank1 c。在此程序中,函数 fun的功能是:找出形参 s所指字符串中出现频率最高的字母 (不区分大小写 ),并统计出其出现的次数。 例如,形参 s所指的字符串为: abcAbsmaxless,程序执行后的输出结果为: lettera: 3times letters: 3times 请在程序的下画线处填入正确的内容并把下画线删除,使 程序得出正确的结果。 注意:部分源程序在文件 BLANK1 C中。 不得增行
2、或删行,也不得更改程序的结构 ! 试题程序: #include stdio h #include string h #include 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) prin
3、tf(“ nletter c : dtimes n“, i+a, ki); main() char s81; printf(“ nEnter a string: n n“); gets(s); fun(s); 二、程序修改题 2 使用 VC+2010打开考生文件夹下 modi1中的解决方案。此解决方案的项目中包含一个源程序文件 modi1 c。在此程序中,函数 fun的功能是:求出如下分数序列的前 n项之和,和值通过函数值返回。 例如,若 n=5,则应输出 8 391667。请改正程序中的错误,使其得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构 !试题程序:
4、#includestdlib h #include conio h #include stdio h *found* void fun(int n)int a=2, b=1, c, k; double s=0 0; for(k=1; k =n; k+)*found* s=s+(Double)a b; c=a; a=a+b;b=c; return(s); void main()int n=5; system(“CLS“); printf(“ nThe value of function is: lf n“, fun(n); 三、程序设计题 3 使用 VC+2010打开考生文件夹下 prog1中的
5、解决方案。此解决方案的项目中包含一个源程序文件 prog1 c。在此程序中,请编写一个函数 fun,它的功能是:将ss所指字符串中所有下标为奇数位置的字母转换为大写 (若该位置上不是字母,则不转换 )。 例如,若输入 “abc4Efg“,则应输出 “aBc4EFg“。 注意:部分源程序在文件 PROGl C中。 请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。 试题程序: #include conio h #include stdio h #include string h #include stdlib h void fun(char*ss)
6、void main() FILE, *wf; char tt81, s81=“abc4Efg“; system(“CLS“); printf(“ nPlease enter an string within80characters: n“); gets(tt); printf(“ n nAfter changing, the string n s“, tt); fun(tt); printf(“ nbecomes n s n“, tt); *found* wf=fopen(“out dat“, “w“); fun(s); fprintf(wf, “ s“, s); fclose(wf); *f
7、ound* 国家二级 C语言机试(操作题)模拟试卷 641答案与解析 一、程序填空题 1 【正确答案】 (1)*s (2)1 (3)kn 【试题 解析】 本题统计字符串中各字母的个数,建立了一个包括 26个整型变量的数组,用来存储每个字母的个数。 填空 1: isalpha函数的作用是判断当前字符是否为字母, tolower函数的作用是将当前字母转换为小写字母,所以应填 *s。 填空 2:把该字母出现的个数累加到指定的数组中,所以应填 1。 填空 3: max用来记录出现次数最高的字母的出现次数,如果当前该字母出现次数大于最大次数 max,那么把该次数赋值给 max,所以应填 kn。 二、程序
8、修改题 2 【正确答案】 (1)double fun(int n) (2)s=s+(double)a b; 【试题解析】 (1)由语句 “return(s); ”和变量 s定义为 double型可知,该函数定义时其类型标识符为 double类型。 (2)注意数据类型 double的书写格式。 三、程序设计题 3 【正确答案】 void tun(char*ss) int i; for(i=0; ssi!= 0; i+) *将 ss所指字符串中所有下标为奇数位置的字母转换为大写 * if(i 2=1&ssi =a&ssi =z) ssi=ssi-32; 【试题解析】 该题要求将给定字符串中奇数位置的字母转换为大写,需要先判断奇数位置以及是否是小写字母,如果是再通过其转换方法进行转换。 从 C语言的学习中知道,只要将小写字母减去 32即转成大写字母,将大写字母加上 32即转成小写字母。本程序用 if语句实现转换功能。