c语言问题 改为从大到小排列

来源:百度知道 编辑:UC知道 时间:2024/05/26 04:59:25
#include<stdio.h>
#define N 6
main()
{int a[N],i,t=0,j;
for(i=0;i<N;i++)
scanf("%d",&a[i]);

for(j=1;j<=N-1;j++)
for(i=1;i<=N-j;i++)
if(a[i]>a[i+1])

{t=a[i];a[i]=a[i+1];a[i+1]=t;}

for(i=0;i<N;i++)
printf("%d\t",a[i]);

}

#include<stdio.h>
#define N 6
main()
{int a[N],i,t=0,j;
for(i=0;i<N;i++)
scanf("%d",&a[i]);

for(j=0;j<=N-1;j++)
for(i=j+1;i<=N-1;i++)
if(a[j]<a[i])

{t=a[j];a[j]=a[i];a[i]=t;}

for(i=0;i<N;i++)
printf("%d\t",a[i]);

}

你的for循环不能从1开始,因为你赋值从0开始的,而循环从1开始后,第一个数字肯定不会参与排序的.
#include<stdio.h>
#define N 6
void main()
{int a[N],i,t=0,j;
for(i=0;i<N;i++)
scanf("%d",&a[i]);

for(j=0;j<N;j++)
for(i=0;i<N-j-1;i++)
if(a[i]<a[i+1])
{t=a[i];a[i]=a[i+1];a[i+1]=t;}

for(i=0;i<N;i++)
printf("%d\t",a[i]);

}

把你原来的程序改了两个地方,程序中有注释
#include<stdio.h>
#define N 6
main()
{int a[N],i,t=0,j;
for(i=0;i<N;i++)
scanf("%d",&a[i]);

for(j=1;j<=N-1;j++)
for(i=0;i