数字排序求助
目标:求四个数的大小排序,结果:
9 3 4 2
1073741824,1077936128,1082130432,1091567616
--------------------------------
Process exited after 7.46 seconds with return value 0
请按任意键继续. . .
一直显示莫名的数,就是不排序{:5_99:}
#include<stdio.h>
int main()
{
int a,b,c,d,t;
scanf("%d%d%d%d",&a,&b,&c,&d);
if(a>b)
{
t=a;
a=b;
b=t;
}
if(a>c)
{
t=a;
a=c;
c=t;
}
if(a>d)
{
t=a;
a=d;
d=t;
}
if(b>c)
{
t=b;
b=c;
c=t;
}
if(b>d)
{
t=b;
b=d;
d=t;
}
if(c>d)
{
t=c;
c=d;
d=t;
}
printf("%d%d%d%d",a,b,c,d);
return 0;
}
排序思路本身没问题,是类型没对上。你看到的 1073741824 其实是 2.0f 的二进制位(0x40000000),后面三个依次是 3.0f、4.0f、9.0f 的位模式。也就是说你实际跑的那版 scanf 用的是 %f,把 float 的位塞进了 int 变量里,再用 %d 打印就成这串怪数。把 scanf 那行的 %f 全换成 %d(变量声明的是 int),结果就正常了。
页:
[1]