帮我看下,这个哪里出错了,输入一个5个数据的数组,从小到大排列,运行后输出的是-32768

如题所述

排序的地方就缺少参数替换,从if开始就有问题。你需要熟悉下面两种重要的排序方法。
用冒泡法排序:
#include <stdio.h>
main()
{
int a[5];
int i,j,t;
for (i=0;i<5;i++)
scanf("%d",&a[i]);
for (i=0;i<4;i++)
for(j=0;j<4-i;j++)
{
if(a[j]>a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
for (i=0;i<5;i++)
printf("%3d",a[i]);
}
选择排序:
#include <stdio.h>
main()
{
int a[5];
int i,j,k,t;
for (i=0;i<5;i++)
scanf("%d",&a[i]);
for (i=0;i<4;i++)
{
k=i;
for(j=i+1;j<5;j++)
if(a[k]>a[j])
k=j;
if(k!=i)
{
t=a[k];
a[k]=a[i];
a[i]=t;
}
}
for(i=0;i<5;i++)
printf("%3d",a[i]);
}
希望对你有帮助。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-10-19
s在哪里定义的?
你不应该在里层循环里打印吧,应该在外层打印吧。
第2个回答  2012-10-19
排序的时候应该是两个数颠倒顺序,不能直接改变其值