c++为什么下面的程序不能实现排序

来源:百度知道 编辑:UC知道 时间:2024/05/31 23:31:12
#include<iostream.h>
void x(float *p,int n)
{
float *a[50];
for(int i=0;i<=n;i++)
a[i]=*p++;
for(i=0;i<n-1;i++)
for(int j=1;j<n;j++)
if(a[i]>a[j])
{
float z;
z=a[i];
a[i]=a[j];
a[j]=z;
}
}
void main()
{
int n;
float a[50];
cout<<"输入实数的个数"<<endl;
cin>>n;
cout<<"输入若干实数"<<endl;
for(int i=0;i<n;i++)
{cin>>a[i];
x (&a[i],n);}
for(int j=0;j<n;j++)
cout<<a[j]<<endl;
}

这样:
VS2005上调试通过

#include<iostream>
using namespace std;

void x(float *p,int n)
{
float a[50];
for(int i=0;i<=n;i++)
a[i]=*p++;
for(int i=0;i<n-1;i++)
for(int j=1;j<n;j++)
if(a[i]>a[j])
{
float z;
z=a[i];
a[i]=a[j];
a[j]=z;
}
}
void main()
{
int n;
float a[50];
cout<<"输入实数的个数"<<endl;
cin>>n;
cout<<"输入若干实数"<<endl;
for(int i=0;i<n;i++)
{cin>>a[i];
x (&a[i],n);}
for(int j=0;j<n;j++)
cout<<a[j]<<endl;
}

调用出错了吧,

for(int i=0;i<n;i++)
{cin>>a[i];
x (&a[i],n);}

改为:

for(int i=0;i<n;i++)
cin>>a[i];
x(a,n);