C语言程序无法结束循环

标签 c loops math codeblocks

我正在编写一段代码,用户输入起始值、最大值和步长值。我计算的结果是正确的,所有的公式都是正确的,但是有一个问题。我无法停止循环以便正确显示我的答案。当我运行时,它只是启动循环,然后我在屏幕上收到大量垃圾答案。

#include <stdio.h>
#include <math.h>

float funqcia(float x, float y, float k);

int main()
{
    float y;
    float A;
    float B;
    float H;
    float x;
    float t;
    int e=0;
    int N=15;
    int k = 0;
    while(e==0)
    {
        printf("enter starting value here: ");
        scanf("%fl",&A);
        printf("enter maximum value: ");
        scanf("%fl", &B);
        printf("enter step: ");
        scanf("%fl", &H);
        if(B > A)
        {
            e=1;
        }
        else
        {
            printf("Sorry, stopping value should be higher than starting value.");
        }
    }
    while(e==1)
    {
        printf("%s","_________________________________________________");
        printf("%s","\n");
        printf("%s","|                                                |");
        printf("%s","\n");
        printf("%s","|       Results are shown below                  |");
        printf("%s","\n");
        printf("%s","|                                                |");
        printf("%s","\n");
        printf("%s","--------------------------------------------------");
        printf("%s","\n");
        t=0;
        /*for(int i=0;i<N;i++)
        {
            if(i>0)
            {
                if (B<=y)
                {
                break;
                }
                t=pow(2,i)*pow(H,i-1);
                x=x+t;
                printf("%s","| ");
                printf("%fl",x);
                printf("%s","         | ");
                funqcia(x,y);
                printf("%s","\n");
            }
            else
            {
                if (B<=y)
                {
                    break;
                }
                x=A;
                printf("%s","| ");
                printf("%fl",x);
                printf("%s","         | ");
                funqcia(x,y);
                printf("%s","\n");
            }
        }*/
        for (int i=0;i<N;i++)
        {
            t=pow(2,i)*pow(H,i-1);
            x=x+t;
            if (i == 0)
            {
                x=A;
            }
            y=funqcia(x,y,k);
            if (B<=k)
            {
                break;
            }
            else
            {
                printf("x=%fl\ty=%fl", x,y);
                //}
            }
        }
    }
}

float funqcia(float x, float y, float k)
{
    y=((3+exp(x-1))/(1+pow(x,2)*(3-tan(x))));
    if(isinf(y))
    {
        printf("this is infinity");
    }
    else
    {
        printf("y: %fl",y);
    }
    k=y;
    return k;
}

最佳答案

您似乎在程序开始时将变量 e 初始化为 0。你可以检查 while(e==0),当 B>A 条件为 true 时,e 现在变为 1。接下来你有 while(e==1) 和一些代码来显示计算和结果,这里 e 的值永远不会从 1 变为其他值。由于它始终为 1,因此 while 条件会发出绿色信号以继续循环直到无穷大,并以某种方式弄乱屏幕上的结果。

关于C语言程序无法结束循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41066102/

相关文章:

Javascript while 循环使页面无法加载

c - 通过命令行获取一个十六进制数到程序中

c - 如何将堆栈中的整数数组分配为 32 位对齐

list - 从python中的对象列表中提取属性列表

C - 使用 malloc 创建一个数组,然后循环遍历它

c# - 获取两个矩形之间的向量

c - MPI 收集多个 vector

c - FUSE开放系统调用机制

c++ - 模板化数学函数应该采用值还是 const 引用?

c# - 嵌套的 Math.Pow(...) 行为怪异