为什么编译成功但没有结果输出

 

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