这个C程序怎么回事啊?莫名其妙的!

来源:百度知道 编辑:UC知道 时间:2024/05/17 09:01:40
#include<stdio.h>
void main()
{
float a[]={23,48,389,38,-3,98,34,29};
int m;
int i,j;
float temp;
for(i=0;i<8;i++)
{ m=i;
for(j=i+1;j<9;j++)
{
if(a[m]<a[j])
m=j;
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
for(i=0;i<9;i++)
printf("%f\n",a[i]);
}
我本来想实现的是用选择法排序!结果却使得输入的数逆序输出了
如果是选择法排序应该怎么样修改啊?还有这个程序是如何实现把输入的数逆序输出的?把我搞的晕头转向的?希望各位大侠多多指教!

#include<stdio.h>
void main()
{
float a[]={23,48,389,38,-3,98,34,29};
int i,j;
float temp;
for(i=0;i<8;i++)
{
for(j=i+1;j<8;j++)//不能有a[8]
{
if(a[i]>a[j])//m没有必要 if少了{}
{
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
}
for(i=0;i<8;i++)//a[8]
printf("%f\n",a[i]);
}

#include<stdio.h>
void main()
{
float a[]={23,48,389,38,-3,98,34,29};
int i,j;
float temp;
for(i=0;i<8;i++)
for(j=i+1;j<9;j++)
{
if(a[i]<a[j])
{
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
for(i=0;i<9;i++)
printf("%f\n",a[i]);
}
这个是从大到小输出吧
把不等号换一下就是从小到大输出吧

#include<stdio.h>
main()
{
float a[]={23,48,389,38,-3,98,34,29};
int i,j;
float temp;
for(i=0;i<8;i++)
{
for(j=i+1;j<8;j++)