C++对n个数从小到大排序

来源:百度知道 编辑:UC知道 时间:2024/05/22 12:11:21
#include "iostream"
using namespace std;
pai()
{int i,j,k,n,z,a[100];
for(i=0;i<n;i++)
{for(j=0;j<n-i;j++)
if(a[i]>a[i+1])
{
k=a[i];
a[i]=a[i+1];
a[i+1]=k;// 交换值
}
}

}

int main()
{int i,j,k,n,a[100];
cin >>n;//输入要输入数的个数
for(i=0;i<n;i++)
cin >>a[i];//输入n个数
pai(); //调用函数
for(i=0;i<n;i++)
cout <<a[i]<<",";//输出数子
return 0;
}
#include "iostream"
using namespace std;
pai(int a[],int n) //参数传递
{int i,j,k;
for(i=0;i<n-1;i++)
{for(j=i;j<n;j++)
if(a[i]>a[j])
{
k=a[i];
a[i]=a[j];
a[j]=k;// 交换值
}
}
}
pai(float a[],int n) //参数传递
{int i,j,k;
for(i=0;i<n-1;i++)
{for(j=i;j<n;j++)
if(a[i]>a[j])
{
k=a[i];
a[i]=a[j];

应为你原来根本就没有把输入的数组传递给
调用函数,难为无米之炊啊~!
还有你原来的排序函数里也有逻辑错误
好好看看书,
下面是改好的程序。

#include "iostream"
using namespace std;
pai(int a[],int n) //参数传递
{int i,j,k;
for(i=0;i<n-1;i++)
{for(j=i;j<n;j++)
if(a[i]>a[j])
{
k=a[i];
a[i]=a[j];
a[j]=k;// 交换值
}
}

}

int main()
{int i,j,n,a[100];
cin >>n;//输入要输入数的个数
for(i=0;i<n;i++)
cin >>a[i];//输入n个数
pai(a,n); //调用函数
for(i=0;i<n;i++)
cout <<a[i]<<",";//输出数子
return 0;
}

****************************************************
第一次补充回答:
以下是修改通过代码和修改处原错误注释:

#include "iostream"
using namespace std;
void pai(int a[],int n) //没有返回值的函数要定义为void,下同
{int i,j,k;
for(i=0;i<n-1;i++)
{for(j=i;j<n;j++)
if(a[i]>a[j])
{
k=a[i];
a[i]=a[j];