给定一个函数,其函数功能为:使10个整数按由小到大的顺序排列。在主函数中输入10个数,并输出结果。使用VC6打开考生文件夹下的工程RevProj5。此工程包含一个源程序文件RevMain5.cpp,该程序实现上述功能。但此程序运行有问题。请找出错误的地方,

admin2009-01-15  27

问题 给定一个函数,其函数功能为:使10个整数按由小到大的顺序排列。在主函数中输入10个数,并输出结果。使用VC6打开考生文件夹下的工程RevProj5。此工程包含一个源程序文件RevMain5.cpp,该程序实现上述功能。但此程序运行有问题。请找出错误的地方,改正后将此程序调试正确。
   注意:不得删行或增行,也不得更改程序结构。
   文件RevMain5.cpp中的程序清单如下:
   //RevMain5.cpp
   #include<iostream>
   #include<iomanip>
   using namespace std;
   int main()
   {
      void sort(int array[],int n);
      int data[10],*p,i;
      cout<<"Input 10 numbers\n";
      for (i=0; i<10; i++)
         cin>>data ;
      cout<<"the origined array is:";
      for (p=data;p<data+10;p++)
      {
         if((p-&data[0]) %5==0)
            cout<<" \n";
         cout<<setw (5) <<*p;
      }
      sort (data, 10);
      cout<<"\n the present array is:";
      for(p=data;p〈data+10;p++)
      {
         if((p-&data[0])%5==0) cout<<"\n";
         cout<<setw (5)<<*p;
      }
   }
   void sort(int array[],int n)
   {
      /*  *  *  *  *  *  *  *  *found *  *  *  *  *  *  *  *  *  */
      for(p1=array;p1<array+(n-1) ;p1++)
      {
         for (p2=p1+1 ;p2<array+n;p2++)
         {
            if (*p1>*p2)
            {
      /*  *  *  *  *  *  *  *  *found  *  *  *  *  *  *  *  *  *  */
               temp=*p1;  *p1=*p2;  *p2=*p1;
            }
         }
      }
   }

选项

答案修改后的函数sort为: void sort(int array[],int n) { int *p1,*p2,temp; for(p1=array;p1<array+(n-1) ;p1++) { for(p2=p1+1;p2<array+n;p2++) if (*p1>*p2) { temp=*p1; *p1=*p2; *p2=temp; } } }

解析 程序中有两处标识行,表明程序中有两处错误,而且都是在函数sort的函数体中的错误。不难发现在函数sort中出现了*p1、*p2、temp这样的变量,而在用到这些变量前,程序没有对它们进行定义,所以在第1处错误处写上“int *p1,*p2,temp;”。第2处错误:易知if语句中的语句序列是实现两个指针变量中值的交换,显然上述语句不能实现此功能,所以应改为:“temp=*p1;*p1:*p2;*p2=temp;”
转载请注明原文地址:https://kaotiyun.com/show/jKID777K
0

最新回复(0)