这是我的代码。
#include<stdio.h>
main()
{
float H,U,D,F;
int x=0,i=0;
scanf("%f %f %f %f",&H,&U,&D,&F);
while(H>x){
x=x+U-D;
U=U-(F/100*U);
i++;
printf("%d\t%d\t%2lf\t%2lf\t%2lf\n",i,x,U,D,F);
}
printf("%d",i);
}
它已陷入无限循环。这里的问题是什么?
答案 0 :(得分:0)
根据输入值的不同,可能会出现无限循环。
如果您的F
是肯定的,那么您的U
似乎已设置为指数衰减,从初始值到0
。如果您的D
也是肯定的,那么在某个时刻x
会一直在减少,而不会增加:如果它在此之前未能超过H
,它就永远不会...
您可能需要添加其他退出条件,例如if(x<0)
答案 1 :(得分:0)
只有在某些情况下才会出现这种情况。 而且由于四舍五入,你应该把x作为浮点数,这样你才能得到合适的答案。 在你的情况下,首先将计算U-D并让我们考虑一个案例 U型d = 0.65235 然后.. 它将被转换为0并添加到x 所以X将是它所以..所以你的循环将进入无限状态.. 我在下面张贴了一张照片,可以帮助您了解原因..
答案 2 :(得分:0)