江苏省高校计算机等级考试命题研究院 江苏省高校计算机等级考试辅导
全国等级考试二级C语言2009上机模拟3
一、填空题
函数fun的功能是:从三个形参x、y、z中找出中间的那个数,作为函数值返回。
例如,当x=121,y=456,z=333时,中间的数为333。
请勿改动主函数main与其他函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。
注意:部分源程序给出如下。
# include
int fun(int a,int b,int c)
{
  int temp;
  temp=(a>b) ? (b>c ? b : (a>c ? c : ___1___)) :
    ((a>c) ? ___2___ :
    ((b>c) ? c : ___3___));
  return temp;
}
main()
{
  int x=121,y=456,z=333,mid;
  mid=fun(x,y,z);
  printf("\nThe middle number is :  %d\n",mid);
}
二、改错题
下列给定程序中,函数fun和quest的功能是:用二分法求方程2x3-4x2+3x-6=0的一个根,并要求绝对误差不超过0.001。例如,若给m输入-50,给n输入30,则函数求得的一个根值为2.000。
请修改程序中的错误,得出正确的结果。
注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。
# include
# include
double quest(double x)
{
  return (2*x*x*x-4*x*x+3*x-6);
}
double fun(double m,double n)
{
  /********error********/
  int r;
  r=(m+n)/2;
  /********error********/
  while(fabs(n-m)<0.001)
  {
    if(quest(r)*quest(n)<0)
      m=r;
    else
      n=r;
    r=(m+n)/2;
  }
  return r;
}
main()
{
  double m,n,result;
  printf("Please input m n : \n");
  scanf("%lf%lf",&m,&n);
  result=fun(m,n);
  printf("result=%6.3f\n",result);
}
三、编程题
请编写函数void fun(int y,int b[],int*m),它的功能是:求出能整除y且是奇数的各整数,并按从小到大的顺序放在b所指的数组中,这些除数的个数通过形参m返回。
例如,若y中的值为90,则有4个数符合要求,它们是1、3、5、9、15、45。
请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
注意:部分源程序给出如下。
# include
# include
void fun(int y,int b[],int *m)
{
 
}
main()

  int y,a[500],m,j;
  FILE *out;
  printf("\nPlease input an integer number:\n");
  scanf("%d",&y);
  fun(y,a,&m);
  for(j=0;j    printf("%d ",a[j]);
  printf("\n");
  fun(730,a,&m);
  out=fopen("outfile.dat","w");
  for(j=0;j    fprintf(out,"%d\n",a[j]);
  fclose(out);
}