假如整数数列中的数不重复,并存放在数组中。下列给定的程序中,函数fun()的功能是:删除数列中值为X的元素。 N中存放的是数列中元素的个数。 请改正程序中的错误,使它能够得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程

admin2010-05-05  47

问题 假如整数数列中的数不重复,并存放在数组中。下列给定的程序中,函数fun()的功能是:删除数列中值为X的元素。 N中存放的是数列中元素的个数。
   请改正程序中的错误,使它能够得出正确的结果。
   注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
   试题程序:
    #include<stdio.h>
   #define  N  20
   fun (int *a,int n,int x)
   {int p=0,i;
    a[n]=x;
    while (x!=a[p])
      p=p+1;
    if(p==n) return -1;
    else
      {for (i=p;i<n;i++)
   /*************found**************/
         a[i+1]=a;
      return n-1;
      }
   }
   main()
   {int w[N]={-3,0,1,5,7,99,10,15,30,90},
              x,n,i;
   n=10;
   printf("The original data :\n");
   for (i=0;i<n;i++)  printf("%5d",w);
   printf("\nInput x (to delete ): ");
           scanf("%d",&x);
   printf("Delete  :  %d\n",x);
   n=fun(w,n,x);
   if (n==-1)  printf("***No be found!
                       ***\n\n");
   else
     {printf("The data after deleted:\n");
      for (i=0;i<n;i++)  printf("%5d",
           w);printf("\n\n");
     }
   }

选项

答案错误:a[i+1]=a[i]; 正确:a[i]=a[i+1];

解析 上机改错题有一个优势,就是我们可以执行该程序,根据错误的提示再一步一步实现改错的目的,我们先不看程序是什么意思,甚至不用看它在求什么。按Ctrl+F9快捷键,然后看看屏幕提示。另外,审题时我们必须要注意“不要改动main()函数,不得增行或减行,也不得更改程序结构”,这样;对我们来说,只要读懂题意,对程序执行部分:
   {int p=0,i;
   a[n]=x;
   while (x!=a[p])
   p=p+1;
   if (p==n) return -1;
   else
   { for (i=p;i<n;i++)
   a[i+1]=a;
   return n-1;
   }
    逐步分析,再应用平时的常识加以区分,琢磨,相信答案不攻自破,这种考题,按Ctrl+F9快捷键后,屏幕一般都不会提示错误,否则就显得太儿科了一点,所以,我们并不需要着急去找错误,而是把程序读懂。
转载请注明原文地址:https://jikaoti.com/ti/oSkiFFFM
0

最新回复(0)