C语言 int 和double 排序问题

来源:百度知道 编辑:UC知道 时间:2024/05/06 09:33:38
# include<stdio.h>
void main()
{
int raw[10];
int i,j;
int t;
for(i=0;i<10;i++)
scanf("%d",&raw[i]);
for(j=0;j<10;j++)
{
for(i=0;i<9;i++)
{
if(raw[i]<raw[i+1])
{
t=raw[i];
raw[i]=raw[i+1];
raw[i+1]=t;
}

}
}
for(i=0;i<10;i++)
printf("%d ",raw[i]);
}
这个是用整形做的从大到小的数组排序
为什么把raw[10]换成double型以后运行结果就变成从小到大的排序了呢?

# include<stdio.h>
void main()
{
double raw[10];
int i,j;
double t;
for(i=0;i<10;i++)
scanf("%lf",&raw[i]);
for(j=0;j<10;j++)
{
for(i=0;i<9;i++)
{
if(raw[i]<raw[i+1])
{
t=raw[i];
raw[i]=raw[i+1];
raw[i+1]=t;
}

}
}
for(i=0;i<10;i++)
printf("%lf ",raw[i]);
}

改了下 这样就可以了 注意改成double后相关的也要边 如printf 中的d

又问了次。。。直接给你个程序吧!
#include<stdio.h>
main()
{
double raw[10];//int改成double
int i,j;
double t;//int改成double
for(i=0;i<10;i++)
scanf("%lf",&raw[i]);//d改成lf
for(j=0;j<10;j++)
{
for(i=0;i<9;i++)
{
if(raw[i]<raw[i+1])
{
t=raw[i];
raw[i]=raw[i+1];
raw[i+1]=t;
}

}
}
for(i=0;i<10;i++)
printf("%lf ",raw[i]);//d改成lf
}