知ing

最新计算机二级C语言上机试题汇编100套

NCRE研究组 编 / 高等教育出版社

゛Zirro、Y 上传

查看本书

47套: 

给定程序中,函数fun的功能是:找出形参s所指字符串中出现频率最高的字母(不区分大小写),并统计出其出现的次数。 

例如,形参s所指的字符串为:abcAbsmaxless,程序执行后的输出结果为: 

letter 'a' : 3 times 

letter 's' : 3 times 

请在程序的下划线处填入正确的内容并把下划线删除使程序得出正确的结果。 

注意:源程序存放在考生文件夹下的BLANK1.C中。 

不得增行或删行,也不得更改程序的结构! 

给定源程序: 

#include <stdio.h> 

#include <string.h> 

#include <ctype.h> 

void fun(char *s) 

{ int k[26]={0},n,i,max=0; char ch; 

while(*s) 

{ if( isalpha(*s) ) { 

/ **********found**********/ 

ch=tolower(__1__); 

n=ch-'a'; 

/ **********found**********/ 

k[n]+= __2__ ; 

s++; 

/ **********found**********/ 

if(max<k[n]) max= __3__ ; 

printf("\nAfter count :\n"); 

for(i=0; i<26;i++) 

if (k[i]==max) printf("\nletter \'%c\' : %d times\n",i+'a',k[i]); 

main() 

{ char s[81]; 

printf("\nEnter a string:\n\n"); gets(s); 

fun(s); 

解题思路: 

本题是找出字符串中出现频率最高的字母并统计出其次数。 

第一处:将当前字母转换为小写字母,所以应填:*s。 

第二处:把该字母出现的个数累加到指定的数组中,所以应填:1。 

第三处:如果当前该字母出现次数大于最大次数max,那么把该次数赋值给max,所以应填: k[n]。 

*************************************************** 

给定程序MODI1.C中函数 fun 的功能是:求S的值。 

例如,当k10时,函数值应为:1.533852。 

请改正程序中的错误,使程序能输出正确的结果。 

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构! 

给定源程序: 

#include <stdio.h> 

#include <math.h> 

/ ************found************/ 

void fun( int k ) 

{ int n; float s, w, p, 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************/ 

return s 

main ( ) 

printf("%f\n", fun (10)); 

解题思路: 

第一处:由于函数返回是实数,所以必须定义返回的类型,只有整型或无结果返回可以忽略,其他必须定义返回的类型,所以要在此行前加上doublefloat。 

第二处:缺少分号。 

*************************************************** 

编写函数fun,它的功能是:计算并输出下列级数和: 1 1 1 

S = ── ── … ─── 

1×2 2×3 n(n+1) 

例如,当n = 10时,函数值为:0.909091。 

注意部分源程序在文件PROG1.C文件中。 

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 

给定源程序: 

#include <stdio.h> 

double fun( int n ) 

main() / * 主函数 */ 

printf("%f\n", fun(10)); 

NONO(); 

解题思路: 

本题是根据公式计算结果。使用for循环语句进行计算。但要注意的是:在除法运算中,如果除数和被除数都是整数,所以所除的结果也是整数,因此1应取实数或进行实型的类型转换。 

参考答案: 

double fun( int n ) 

double s = 0.0 ; 

int i ; 

for(i = 1 ; i <= n ; i++) s = s + 1.0 / (i * (i + 1)) ; 

return s ; 

※※※※※※※※※※※※※※※※※※※※※※※※※ 


查看更多