选择法升序排列10个数

 

//  date:2020/3/3
//  author:xiezhg5
#include <stdio.h>
int main(void)
{
	int i,j,min,temp,a[11];     //temp交换的中间变量,a[11]存放数据 
	printf("请输入数据:\n");
	for(i=1;i<=10;i++)        //剔除a[0],符合习惯
	//for循环控制输入 
	{
		printf("a[%d]=\n",i);
		scanf("%d",&a[i]);
	}
	printf("您输入的原始数据为:\n");
	//for循环控制输出 
	for(i=1;i<=10;i++)
	printf("%5d\n",a[i]);
	for(i=1;i<=9;i++)
	{
		min=i;                      //min储存输入的i的值 
		for(j=i+1;j<=10;j++)       //a[i]的后一个数a[j] 
		if(a[min]>a[j])  min=j;   //保证a[min]储存最小值 
		//交换a[i]和a[min]的值 
		temp=a[i];
		a[i]=a[min];
		a[min]=temp;   //a[i]储存最小值 
	}
	printf("\n排序后的数字为:\n");
	//for循环控制输出 
	for(i=1;i<=10;i++)
	printf("%5d\n",a[i]);     //宽度为5列 
	return 0;
}

 

你这也不需要做啥啊,到底问题是什么?

交换的地方写错了

if(a[i]>a[k])

{

 t = a[i];
 a[i]=a[k];
a[k]=t;

}

修改为:

if(k != i) //修改这一句
 {
 t = a[i];
 a[i]=a[k];
 a[k]=t;
 }