就业数据资源平台
当前位置:首页 > C语言程序设计
2014年计算机二级C语言上机模拟试题46

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


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


  letter ’a’ : 3 times 


  letter ’s’ : 3 times 


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


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


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


  给定源程序: 


  #include  


  #include  


  #include  


  void fun(char *s) 


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


  while(*s) 


  { if( isalpha(*s) ) { 


  ch=tolower(__1__); 


  n=ch-’a’; 


  k[n]+= __2__ ; 


  } 


  s++; 


  if(max  } 


  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的值。 


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


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


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


  给定源程序: 


  #include  


  #include  


  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++; 


  } 


  return s 


  } 


  main ( ) 


  { 


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


  }


  解题思路: 


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


  第二处:缺少分号。 


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


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


  1 1 1 


  S = ── + ── + … + ─── 


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


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


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


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


  给定源程序: 


  #include  


  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 ; 


  } 


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

就业数据资源平台