圆通快递县级代理:帮忙看看

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/28 14:51:09
我今天编了一个排10个整数顺序的程序,运行总出错,请各位高手看看哪出错了.
#include <stdio.h>
main()
{int i,j,min,temp,a[11];
printf("输入数据:\n");
for(i=1;i<=10;i++)
{printf(a"[%d]=",i);
scanf("&d",&a[i]);}
printf("\n");
for(i=1;i<=10;i++)
printf("%5d",a[i]);
printf("\n");
for(i=1;i<=9;i++)
{min=i;
for(j=i+1;j<=10;j++)
if(a[min]>a[j]) min=j;
temp=a[min];
a[min]=temp;}
printf("\n 已分类数据:\n")
for(i=1;i<=10;i++)
printf("%5d",a[i]);
}

你看你这里的排序:
for(i=1;i<=9;i++)
{
min=i;
for(j=i+1;j<=10;j++)
if(a[min]>a[j]) min=j;
temp=a[min];
a[min]=temp;
}

temp = a[min]; a[min] = temp;

没有数据交换啊!
你的思路是:
找到最小数的位置,将它与第一个元素交换,再从第二个元素开始找剩下数的最小数位置,再与第二个数交换,所以,把那段改成下面的:

for(i = 1; i <= 9; i++)
{
min = i;
for(j = i+1; j <= 10; j++)
{
if(a[min] > a[j]) min = j;
}
temp = a[min];
a[min] = a[i];
a[i] = temp;
}

这样就可以了。

不知道啊,
有知道的人么