// 用函数实现数组排序,按从大到小的顺序排列
#include<stdio.h>
#define N 5
void arr(int a[])
{
int i,temp;
for(i=0;i<N-1;i++)
{
if(a[i]<a[i+1])
temp=a[i];
a[i]=a[i+1];
a[i+1]=temp;
}
}
void main()
{
int i,a[N];
for(i=0;i<N;i++)
scanf("%d",a+i);
arr(a);
for(i=0;i<N;i++)
printf("%3d",a[i]);
printf("\n");
}
----------------解决方案--------------------------------------------------------
#include<stdio.h>
#define N 5
void arr(int a[])
{
int i,temp;
for(i=0;i<N-1;i++)
if(a[i]<a[i+1])
{temp=a[i];
a[i]=a[i+1];
a[i+1]=temp;
}
}
void main()
{
int i,a[N];
for(i=0;i<N;i++)
scanf("%d",&a[i]);
arr(a);
for(i=0;i<N;i++)
{printf("%3d",a[i]);
printf("\n"); }
getch();
}
不说了..自己看着改吧..还有..你这个程序只是把最小的数放到数组的最后面 并不完全排序.!~~我该成这样 运行后应该象个样子了
----------------解决方案--------------------------------------------------------
[CODE]
#include<stdio.h>
#define N 5
void arr(int a[])
{
int i,j,temp;
for(i=0;i<N-1;i++)
{
for(j=i+1;j<N;j++)
if(a[i]<a[j])
{
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
}
void main()
{
int i,a[N];
for(i=0;i<N;i++)
scanf("%d",a+i);
arr(a);
for(i=0;i<N;i++)
printf("%d ",a[i]);
printf("\n");
}
[/CODE]
----------------解决方案--------------------------------------------------------
要用两个循环。
你只用一个是不对的。
----------------解决方案--------------------------------------------------------
你的愿意是想用冒泡排序算法,但你的算法只是是其中的一趟排序。正确的代码如下
// 用函数实现数组排序,按从大到小的顺序排列
#include<stdio.h>
#define N 5
void arr(int a[])
{
int i,temp,j;
for(j=0;j<N-1;j++)
{for(i=0;i<N-1-j;i++)
{if(a[i]<a[i+1])
{temp=a[i];
a[i]=a[i+1];
a[i+1]=temp;
}
}
}}
void main()
{
int i,a[N];
for(i=0;i<N;i++)
scanf("%d",a+i);
arr(a);
for(i=0;i<N;i++)
printf("%3d",a[i]);
printf("\n");
}
----------------解决方案--------------------------------------------------------