就业数据资源平台
当前位置:首页 > C语言程序设计
2013年计算机二级C语言上机试题及答案15

  填空题
  给定程序中,函数fun的功能是:计算下式前n项的和作为函数值返回。
  例如,当形参n的值为10时,函数返回:9.612558。
  请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
  注意:源程序存放在考生文件夹下的BLANK1.C中。
  不得增行或删行,也不得更改程序的结构!
  给定源程序:
  #include <stdio.h>
  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 <stdio.h>
  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 <stdio.h>  考试大(www.Examda。com)
  #include <math.h>
  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();
  }

就业数据资源平台