PTA练习题,猴子吃桃,变式

问题遇到的现象和发生背

PTA练习题,猴子吃桃

img

#include

using namespace std;
int main()
{
float d1;
float d2;
float d3;
float x;

scanf_s("%f", &x);

d3 = 2 / (1-x * 0.01);
d2 = (d3 + 1) / (1-x * 0.01);
d1 = (d2 + 1) / (1-x * 0.01);

printf("%d", (int)d1);

return 0
要求是整数,但是在运算过程中会损失数据,所以声明为float,最后输出的时候使用强制类型转换,可以吗

printf("%d", (int)d1);改为printf("%d", int(d1+0.5));,转化为整数时需要四舍五入,因为浮点数有误差
或者都采用整数计算

d3 = 2 * 100 / (100 - x);
d2 = (d3 + 1) * 100 / (100 - x);
d1 = (d2 + 1) * 100 / (100 - x);

1、由于0.01字面量是double类型,所以上述计算中,部分会被转换为double;
2、double类型的计算不比float慢,如果想尝试,可以直接用double;
3、这题把所有数据扩大100倍就可以按整数计算了