江苏省高校计算机等级考试命题研究院 江苏省高校计算机等级考试辅导
江苏省全国计算机等级考试2009年C语言上机试题1

一、填空题
请补充fun函数,fun函数的功能是求m的阶乘。
请勿改动主函数main与其他函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。
注意:部分源程序给出如下。
# include
long fun(int m)
{
  if(___1___)
    return (m*fun(___2___));
  return ___3___;
}
main()
{
  printf("8!=%ld\n",fun(8));
}
二、改错题
下列给定程序的功能是:读入一个整数n(2≤n≤5000),打印它的所有为素数的因子。例如,若输入整数1234,则应输出:2、617。
请修改程序中的错误,使程序能得出正确的结果。
注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。
# include
# include
/*******error*********/
Prime(int m);
{
  int j,p;
  p=1;
/*******error*********/
  for(j=2;j    if!(m%j)
    {
      p=0;
      break;
    }
  return(p);
}
main()
{
  int i,n;
  printf("\nplease enter an integer number between 2 and 5000:");
  scanf("%d",&n);
  printf("\n\nThe prime factor(s) of %d is(are):",n);
  for(i=2;i    if((!(n%i)) && (Prime(i)))
      printf(" M,",i);
  printf("\n");
}
三、编程题
数组point中存放着m个人的成绩,请编写函数fun,它的功能是:返回高于平均分的人数,并将高于平均分的分数放在high所指的数组中。
例如,当point数组中的数据为50、60、65、70、75、80、88、90、95时,函数返回的人数应该是5,high中的数据应为75、80、88、90、95。
请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
注意:部分源程序给出如下。
# include
# include
# include
int fun(int point[],int n,int high[])

}
main()
{
  int j,m,high[9];
  int point[9]={50,60,65,70,75,80,
88,90,95};
  FILE *out;
  m=fun(point,9,high);
  printf("\nHigh the average point are :");
  out=fopen("outfile.dat","w");
  for(j=0;j  {
    printf("%d ",high[j]);
    fprintf(out,"%d\n0",high[j]);
  }
  fclose(out);
}