学习坊广告 网站建设咨询电话0711-3202220 、 QQ:215665888        将学习坊设为主页     广告赞助QQ:410899793     主页申请

上机考试编程如何避免范围性错误

来源:网络 【www.cn0711.net】   作者:未知【学习坊转】 [字体: ]
机考如何避免范围性错误   

    小编:参加上机考试的朋友最忌讳犯的错误就是粗心,有时明明会做的题,却因为一个小小的符号错误导致全盘皆输。下面这位朋友在做上机练习时,发现自己所编程序的运行结结果正确无误,但评分系统没有给分,这是为什么呢?下面让她来告诉我们其中的原委。    


  在上机操作时,要多注意循环的范围。这种错误往往只有一个符号之差,用run运行时并不报错,在你输入数据后查看结果时,可能结果显示也正确,但却不一定能得分。我在复习过程中,做上机模拟时遇到了这种情况:运行结果正确,评分时却是0分。下面这道题并不难,却让我颇费周折,大家不妨看看,也好引以为戒。    

  “请编写一个函数void fun(int x,int pp[ ],intn)。它的功能是:求出能整除x且不是偶数的各整数,并放在数组pp[ ]中,这些除数的个数由n返回。运行时输入x的值为30。”    

  (注意:部分源程序在文件prog.c中。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。)    

  我是这样编写的:    

  void fun(int x,int pp[ ],int n)    
  {    
  int i, j=0,point;    
  point=pp;    
  for(i=1,i    
  if((x%i= =0)&&&&(i%2!=0))    
  { point=i;    
  point++;    
  j++; }    
  point=NULL;    
  n=j;    
  }    

  按F9未显示异常,按ctrl +F9后输入“30”,结果是:“1 3 5 15”。再次验证输入40,结果是:“1 5”。多次验证(用20、50或其他偶数)结果都正确,可就是评分系统却不给分。我开始怀疑评分系统是不是做得太死板了,或有错误。    

  打开答案,发现答案的解题思路和我的是一致的,参考答案如下:    

  #include    
  #include    
  void fun(int x,int pp[ ],int n)    
  {    
  int i ;    
  int j=0;    
  int point;    
  point=pp;    
  for(i=1,i<=x;i++)    
  {if((x%i= =0)&&&&(i%2!=0))    
  { point=i;    
  point++;    
  j++; }    
  }    
  point=NULL;    
  n=j;    
  }    
  main()    
  { int x,aa[1000],n,i;   
  cl 
rscr;    
  printf(“\n please enter an integer number:\n);    
  scanf(“%d”,&&x)    
  fun(x,aa,&&n);    
  for(i=0;i    
  printf(“%d”,aa[i]);    
  printf(“\n”);    
  NONO( );    
  }    

  我的解答和答案相比,只有几处不同:答案中从if语句前,一直到j++后,还有一层“{ }”;在定义变量时的写法不同,我是用一条语句定义了变量和指针,答案却用了三条语句。虽然认为这两处都不会影响程序的运行,但还是按它的意思做了修改。    

  修改后重新运行,再看评分还是0分。这就更让我肯定自己编写无误,是评分系统的问题。这时候,粗心的我并没有发现for语句内的第二表达式是小于等于x而不是小于x。也许是只注意结果的正确,主观上没怀疑程序有问题。    

  就在我准备放弃的时候,还是不甘心,再仔细看一遍答案,才突然发现第二表达式的错误。    

  我这才明白了为什么每次运行结果都正确却不给分的原因:验证输入的数字(x)都用的是偶数。按本题的题意,偶数是不会显示在结果中的。但如果输入的是27、31或 41,由于结果没有显示这些数的本身,那么就会及早发现程序中的毛病,就能想到循环的范围。    

  在正式考试的时候,没有答案可循,更没有评分系统可用。所以,我们在输入数字时一定要根据题意全面选择输入的数字,也好及早发现程序中的错误。另外还有两个小建议:    

  1. 编写程序时,一般主函数已经给出,只让考生编写某个子函数,这时你若定义了指针指向形参中的某个数组,那么在最后一定不要忘了给指针赋值NULL(或0或‘\0’),以防止指针越界。    
  2. 先保存再运行,以备程序编写欠妥导致死机。 



 

录入:学习坊

查看对 上机考试编程如何避免范围性错误 的评论 【 发表见解 】 【 查看见解 】 【 打印资料 】  
上一篇:参加等级考试体会
下一篇:怎样学习C语言
百度中>“上机考试编程如何避免范围性错误”相关内容 google中>“上机考试编程如何避免范围性错误”相关内容
雅虎中>“上机考试编程如何避免范围性错误”相关内容 搜狗中>“上机考试编程如何避免范围性错误”相关内容
中搜中>“上机考试编程如何避免范围性错误”相关内容 爱问中>“上机考试编程如何避免范围性错误”相关内容