1.scanf("%d",&a[i]); //%d后面不用加空格,如果%d后面有空格,输入数据的时候就要多打一个空格
2.选择排序的逻辑也不是你写的那样的。
代码修改如下:
#include <stdio.h>
int main()
{
int a[10],i,j,min,minindex;
printf("please input an array:\n");
for(i = 0;i< 10;i++)
scanf("%d",&a[i]); //%d后面不用加空格
for (i = 0;i<9;i++)
{
minindex = i;
for (j = i+1;j<10;j++)//每轮比较n-1-i次, 找本轮最小数的下标
{
if(a[minindex] > a[j])
{
minindex = j;//保存小的数的下标
}
}
//找到最小数之后如果它的下标不是i则说明它不在最左边, 则互换位置
if(minindex != i)
{
min = a[minindex];
a[minindex] = a[i];
a[i] = min;
}
}
for(i = 0;i< 10;i++)
printf("%d ",a[i]);
return 0;
}
你的循环嵌套错了,j的初值应该是ili(j=i;j<5;j++)
楼主的排序应该是冒泡,不是选择~
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632