你想要的结果是什么
举个例,输入10,9,8,7,6,5,4,3,2,1
你要他输出什么
不知道这个是不是你想要的结果
我想其中一个原因是你没有交换至比如str中第10个元素师最小的,那i=0是会把它赋给str[0],i=1是会把它赋给str[1]........结果是str中所有元素都是同一个值,而且是最小值
解决办法是把两个值交换再输出
还有一个是你整个程序都有些问题,想想当j=9是str[j+1]是str[10],而str数组只有十个元素
还有其他很多问题不一一说了,下面是我改的程序,其他不改,只改main函数,我是非得在你的基础上改,而且一些问题还没改过来,要是重写的话可以写的更好,但没时间给你写了,自己琢磨吧
int str[10];
int temp;
for(int i=0;i<10;i++)
{
scanf("%d",&str[i]);
}
for(i=0;i<9;i++)
{
for(int j=i+1;j<10;j++)
{
temp=str[i];
str[i]=cmp(str[i],str[j]);
if(str[i]!=temp)
str[j]=temp;
}
printf("%d ",str[i]);
}
printf("%d ",str[9]);
回去看下数据结构 排序一章阿
插入排序,归并排序,快速排序...