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

  第一题
  请补充fun函数,该函数的功能是:求1~100(不包括100)以内所有素数的平均值。
  仅在横线上填入所编写的若干表达式或语句,勿改动函数中的其他任何内容。
  #include <stdio.h>
  main()
  {
  int i, j, n = 0, flag;
  float aver = 0;
  for (j=2; j<100; j++)
  {
  flag = 1;
  for (i=2; i<j; i++)
  if (___1___)
  {
  flag = 0;
  break;
  }
  if (___2___)
  {
  n++;
  aver += j;
  }
  }
  printf("\n\n average=%4.2f", ___3___);
  }
  参考答案:
  第1处填空:j%i==0或!(j%i)或0==j%i
  第2处填空:flag==1或flag或1==flag
  第3处填空:aver/n
  第二题
  数列中,第一项值为3,后一项的值增5;下列给定程序中,函数fun的功能是:计算前n(4<n<50)项的累加和;在累加过程中把那些被4除后余2的当前累加值放入数组中,符合此条件的累加值的个数作为函数值返回主函数。例如,当n的值为20时,该数列为3,8,13,18,23,28,…,93,98。符合此条件的累加值应为42,126,366,570,1010。
  请改正函数fun中的错误,使它能得出正确的结果。
  注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
  #include <stdio.h>
  #define N 20
  int fun(int n, int *a)
  {
  /********found********/
  int i, j, k, sum;
  sum = 0;
  for (k=3, i=0; i<n; i++, k+=5)
  {
  sum = sum+k;
  /********found********/
  if (sum%4 = 2)
  a[j++] = sum;
  }
  return j;
  }
  main()
  {
  int a[N], d, n, i;
  printf("\nEnter n (4<n<=50); ");
  scanf("%d", &n);
  d = fun(n, a);
  printf("\n\nThe result :\n");
  for (i=0; i<d; i++)
  printf("%6d", a[i]);
  printf("\n\n");
  }
  参考答案:
  第1处:int i,j,k,sum; 应改为int i,j=0,k,sum;
  第2处:if(sum%4=2) 应改为if(sum%4==2)

  第三题
  请编写函数fun,其功能是:计算并输出3到n之间所有素数的平方根之和。
  例如,若主函数从键盘给n输入100后,则输出为sum=148.874270。
  请勿改动主函数main和其他函数中的任何内容,仅在fun函数的花括号中填入所编写的若干语句。
  #include <math.h>
  #include <stdio.h>
  double fun(int n)
  {
  }
  main() 考试大论坛
  {
  int n;
  double sum;
  FILE *out;
  printf("\n\nInput n: ");
  scanf("%d",&n);
  sum=fun(n);
  printf("\n\nsum=%f\n\n",sum);
  out=fopen("out.dat","w");
  for (n = 0; n < 10; n++)
  fprintf(out, "%f\n", fun(n+80));
  fclose(out);
  }
  参考答案:
  double fun(int n)
  {
  int m,k ,i;
  double s=0.0;
  for(m=3;m<=n;m++)
  {
  k=sqrt(m);
  for(i=2;i<=k;i++)
  if(m%i==0) break;
  if(i>=k+1)
  s+=sqrt(m);
  }
  return s;
  }

就业数据资源平台