C,codeblock中的无限循环

时间:2016-01-25 19:46:24

标签: c

这是我的代码。

#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);
}

它已陷入无限循环。这里的问题是什么?

3 个答案:

答案 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)

enter image description here这是正确的答案,在第一种情况下,我的x是int,而在第二种情况下,它是float