#include <stdio.h>
int main() {
double d;
scanf("%lf", &d);
if (d >= 0) {
int a = d + 0.5;
printf("%d\n", a);
}
else
{
int a = d - 0.5;
printf("%d\n", a);
}
return 0;
}
解题思路:当整数大于0时,如果把浮点数加上0.5,若浮点数小数部分小于0.5,则加上了0.5后再进行强制转换成整数后整数部分就不会加1;而浮点数小数部分大于等于0.5,则强制转换成整数部分加1;若浮点数小于0,同理,不过是减去0.5就是了,再进行强制转换。
#include <stdio.h>
int main()
{
double a;
scanf("%lf",&a);
int b=(int)a;
if(a>0)
{
if(a+0.5>=b+1)
printf("%d",b+1);
else
printf("%d",b);
}
if(a<0)
{
if(a-0.5<=b-1)
printf("%d",b-1);
else
printf("%d",b);
}
return 0;
}
这个是第二种方法,思路也是一样的。如果有什么错误,请评论区指出。