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

 给定程序中,函数fun的功能是:计算下式前n项的和作为函数值返回。 


  例如,当形参n的值为10时,函数返回:9.612558。 


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


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


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


  给定源程序: 


  #include  


  double fun(int n) 


  { int i; double s, t; 


  s=__1__; 


  for(i=1; i<=__2__; i++) 


  { t=2.0*i; 


  s=s+(2.0*i-1)*(2.0*i+1)/__3__; 


  } 


  return s; 


  } 


  main() 


  { int n=-1; 


  while(n<0) 


  { printf("Please input(n>0): "); scanf("%d",&n); } 


  printf("\nThe result is: %f\n",fun(n)); 


  }


 解题思路: 


  第一处:根据公式可知,累加和变量s,应置0。 


  第二处:for循环的终止值应为形参n。 


  第三处:根据公式以及函数体中t变量内容,所以应填:t*t。 


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


  给定程序MODI1.C中函数 fun 的功能是:统计substr所指子字符串在str所指字符串中出现的次数。 


  例如,若字符串为aaas lkaaas,子字符串为as,则应输出2。 


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


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


  给定源程序: 


  #include  


  fun (char *str,char *substr) 


  { int i,j,k,num=0; 


  for(i = 0, str[i], i++) 


  for(j=i,k=0;substr[k]==str[j];k++,j++) 


  If(substr[k+1]==’\0’) 


  { num++; 


  break; 


  } 


  return num; 


  } 


  main() 


  { 


  char str[80],substr[80]; 


  printf("Input a string:") ; 


  gets(str); 


  printf("Input a substring:") ; 


  gets(substr); 


  printf("%d\n",fun(str,substr)); 


  }


 解题思路: 


  第一处:循环for语句中应有分号。 


  第二处:if错写成If。 


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


  请编写一个函数fun,它的功能是:根据以下公式求π的值(要求满足精度 0.0005, 即某项小于0.0005时停止迭代): 


  π 1 1×2 1×2×3 1×2×3×4 1×2×…×n 


  ─ = 1+─+─—+────+──────+……+──────── 


  2 3 3×5 3×5×7 3×5×7×9 3×5×…×(2n+1) 


  程序运行后,如果输入精度0.0005,则程序输出为3.14…。 


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


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


  给定源程序: 


  #include  


  #include  


  double fun ( double eps) 


  { 


  } 


  main( ) 


  { double x; 


  printf("Input eps:") ; 


  scanf("%lf",&x); printf("\neps = %lf, PI=%lf\n", x, fun(x)); 


  NONO(); 


  } 


  解题思路: 


  本题是根据公式进行计算。 


  参考答案: 


  double fun ( double eps) 


  { 


  double s=1,t=1./3; 


  int n=1; 


  while(t>=eps){ s+=t; n++; t=t*n/(2.0*n+1); } 


  return (s*2.0); 


  } 


  main( ) 


  { double x; 


  printf("Input eps:") ; 


  scanf("%lf",&x); printf("\neps = %lf, PI=%lf\n", x, fun(x)); 


  NONO(); 


  } 


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

就业数据资源平台