//#include<stdio.h>
//int main()
//{
// double d;
// scanf("%1f", &d);
// int a=(int)d;//为什么第二个int有括号
// if (d >= 0)
// {
// if (d + 0.5 >= a + 1.0)
// printf("%d", a + 1);
// else//就近原则
// printf("%d", a);
// }
// else
// {
// if (d - 0.5 <= a - 1.0)
// printf("%d", a-1);
// else
// printf("%d", a);
// }
// return 0;
//}
这串代码是错误的,我暂时没找到原因。蹲一个有缘人帮我解释一下,嘿嘿嘿
四舍五入正确代码
#include <stdio.h>
int main()
{
double d;
scanf("%1f", &d);
// %f 浮点数float的格式输入
// %1f 浮点数double的格式输入
// %2f 保留二位小数 %3f保留三位小数
int a = (int)d;
//正
if (d >= 0)
{
if (d + 0.5 >= a + 1.0)
printf("%d", a + 1);
else
// if...else符合就近原则 else对应离他最近的一个if 多个if和else的情况下,哪个else离哪个if近那两个就对应
printf("%d", a);
}
//负
else
{
if (d - 0.5 <= a - 1.0)
printf("%d", a - 1);
else
printf("%d", a);
}
return 0;
}
本文解析了一段包含错误的C语言代码,重点在于理解浮点数转换为整数时的四舍五入问题,并给出了正确的代码版本。通过探讨if...else语句的就近原则,帮助读者掌握如何处理数值比较和输出操作。
2万+

被折叠的 条评论
为什么被折叠?



