单精度的有效位数没有那么多啊,后面都是精度误差造成的无效位数
单精度一共6-7位有效数字(因为实际存的是2进制,而显示出来是10进制,除不尽,所以数字位数不是一个整数)
你输入了10位有效数字,本身已经溢出了
别说按12位输出了,你原封不动的输出都已经变了
这就好比你把257赋值给一个byte,再显示出来肯定不是257了呀
解题思路: 先获取到三个变量的地址,然后获取三个数据,通过指针进行比较转换即可
答案:
#include <stdio.h>
void swap(int *p_a, int *p_b)
{
int temp = *p_a;
*p_a = *p_b;
*p_b = temp;
}
int main()
{
int a, b, c, *p_a = &a, *p_b = &b, *p_c = &c; // 获取每个变量空间的地址
printf("Please enter three numbers:");
scanf_s("%d%d%d", p_a, p_b, p_c);
if (*p_a > *p_b) {
swap(p_a, p_b);//通过指针进行指向空间内的数据交换
}
if (*p_a > *p_c) {
swap(p_a, p_c);
}
if (*p_b > *p_c) {
swap(p_b, p_c);
}
printf("%d %d %d\n", *p_a, *p_b, *p_c);
system("pause");
return 0;
}