A-A+

给定一个函数 其函数功能为:使10个整数按由小到大的顺序排列。在主函数中输入10个数 并输出

2022-08-05 20:12:20 问答库 阅读 171 次

问题详情

给定一个函数,其函数功能为:使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 numbersn";
for (i=0; i<10; i++)
cin>>data [i];
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*p2temp;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为: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;”

考点:函数,整数