模拟试题

3773考试网计算机等级考试模拟试题正文

2010年9月NCRE二级C语言上机模拟冲刺五

来源:fjzsksw.com 2010-9-14 13:39:49

 

 

模拟试题]2010年9月NCRE二级C语言上机模拟冲刺四 09-14
[模拟试题]2010年9月NCRE二级C语言上机模拟冲刺三 09-14
[模拟试题]2010年9月NCRE二级C语言上机模拟冲刺二 09-14
[模拟试题]2010年9月NCRE二级C语言上机模拟冲刺一

 

一、改错题

  【分析】:对于改错题的程序中的错误一般可分为两类,一类是语法错误,程序中的语句不符合C语言的语法,拼写错误,这类的错误可通过调试程序改正。另一类是逻辑错误,程序调试已通过,但运行结果不正确,这类错误的修改必须要看懂和理解程序。

  #include

  #define N 50

  void sum(int n,int *pa)

  /*属第一类错误。若声明为void类型,则该函数没有返回值,但程序要求返回前n的和,所以类型声明不正确,应改为: int 或去掉*/

  { int count, total,temp;

  *pa=3;*++pa=2;

  total=5; count=2;

  while(count++

  { temp=*(pa-1)**pa;

  if(temp<10)

  { total+=temp; *(++pa)=temp;

  }

  else

  {*++pa=temp/10;

  total+=*pa;

  if(count

  /*属第二类错误。若乘积为两位数,已把其十位数字作为数列的后续项,但若数列的个数没有超过n时,将该乘积个位数字作为数列的后续项。*++pa 与*pa++不同,此处应为: *++pa */

  }

  }

  return total;

  }

  main()

  { int tol,n,i,num[n];

  /*属第一类错误。数组的声明不正确,数组的下标必须为常量或常量标识符。应改为:num[N] 或 num[50] */

  do

  { printf("Input n=?(2

  scanf("%d",&n);

  }while(n<=2||n>=50);

  tol=sum(N,num);

  /*属第二类错误。本题要求生成数列的前n(n<50)项,而N是常量。应改为:sum(n,num) */

  for(i=0;i

  printf((i+1)%5?"%5d":"%5d\n",num[i]);

  printf("\n");

  printf("%d",tol);

  }

 

 

[1] [2] 下一页

触屏版 电脑版
3773考试网 琼ICP备12003406号-1