这一题就有可能存在我之前说的长度指示符的问题。
为什么是有可能呢,因为每个人写的代码都或多或少不一样,有的人用的是float类型的刚刚好就可以用%f不会出问题。
不知道可以去我的主页找<题解|#字符转ASCII码#>这一篇题解。
scanf内完全不会自动转换长度,需要我们去手动给予。
因为我们定义的d是double类型的,所以我们这里的scanf必须%lf,不然会显示随机值。
这是因为数据类型不匹配,导致的问题。

而这一题也是很简单,因为转换规则内的精度参数可以直接帮我们自动四舍五入。
只需要在%f中间加上.0就可以了,这样表示精确到小数点后0位。
举一反三,假如说要精确到小数点后两位,那么就是%.2f这样写,也就是在中间加上.2

#include <stdio.h>

int main() {
    double d = 0;
    scanf("%lf",&d);
    printf("%.0f", d);
    return 0;
}