这个从大到小的排序该怎么写?

#include<stdio.h>
void input();
void sort();
void output();
int n,i,a[20];
void main()
{
input();
output();
sort();
output();
}
void input()
{
puts("Input n(0<n<11):\n");
scanf("%d",&n);
printf("Input %d integers:\n",n);
for(i=1;i<=n;i++)
scanf("%d",&a[i]);
}
void output()
{ printf("The %d integers are:\n",n);
for(i=1;i<=n;i++)
printf("%d ",a[i]);
putchar('\n');
}
void sort()
{
int t,j;
for(i=1;i<n;i++)
for(j=1;j<n-i;j++)
if(a[j]>a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=a[j];
}
}

sort函数有2处问题,已经改正,已经运行通过:

void sort()

{

int t,j;

for(i=1;i<n;i++)

for(j=1;j<=n-i;j++)        //改动处

if(a[j]>a[j+1])

{

t=a[j];

a[j]=a[j+1];

a[j+1]=t;        //改动处

}

}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-12-31
void sort()
{
int t,j;
for(i=0;i<n;i++)
for(j=i;j<n;j++)
if(a[j]>a[i])
{
t=a[j];
a[j]=a[i];
a[i]=t;
}
}
从大到小排序

第2个回答  2014-12-31
#include<stdio.h>
void input();
void sort();
void output();
int n,i,a[20];
void main()
{
input();
output();
sort();
output();
}
void input()
{
puts("Input n(0<n<11):\n");
scanf("%d",&n);
printf("Input %d integers:\n",n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
}
void output()
{
printf("The %d integers are:\n",n);
for(i=0;i<n;i++)
printf("%d ",a[i]);
putchar('\n');
}
void sort()
{
int t,j;
for(i=0;i<n-1;i++)
for(j=0;j<n-i-1;j++)
if(a[j]<a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}