Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 无限循环误差_C - Fatal编程技术网

C 无限循环误差

C 无限循环误差,c,C,该程序构建正确,但我得到了一个无限循环的随机数,我不知道为什么。我 int getInt(void); double getDbl(void); void prnTitle(void); void prnFooter(double gTotal); void pause(void); double getDblLimited(double lowerLimit, double upperLimit); 在提交里程碑1时注释掉主节点 您的最终里程碑一应该与以下测试程序完美运行 要注释掉main(

该程序构建正确,但我得到了一个无限循环的随机数,我不知道为什么。我

int getInt(void);
double getDbl(void);
void prnTitle(void);
void prnFooter(double gTotal);
void pause(void);
double getDblLimited(double lowerLimit, double upperLimit);
  • 在提交里程碑1时注释掉主节点
  • 您的最终里程碑一应该与以下测试程序完美运行
  • 要注释掉main(),请删除箭头后的两个字符

    int main (void)
    {
        int iVal;
        double dVal;
        welcome();
    
        // testing prnTitle()
        printf("listing header and footer with grand total:\n");
        prnTitle();
    
    
    
        // Testing prnFooter()
        prnFooter(1234.5678);
        printf("listing header and footer without grand total:\n");
        prnTitle();
        prnFooter(-1);
    
    
        // Testing Pause() and clrKyb()
        pause();
    
    
        // Testing getInt()
        printf("Enter an integer: ");
        iVal = getInt();
        printf("You entered: %d\n", iVal);
    
    
        // Testing Get Int Limited
        printf("Enter an integer between 10 an 20: ");
        iVal = getIntLimited(10, 20);
        printf("Your entered %d\n", iVal);
    
    
        // Testing Get Double
        printf("Enter a floating point number: ");
        dVal = getDbl();
        printf("You entered: %0.2lf\n", dVal);
    
    
        // Tesing Get Double Limited
        printf("Enter a floating point number between 10.00 an 20.00: ");
        dVal = getDblLimited(10.0, 20.0);
        printf("You entered: %0.2lf\n", dVal);
    
    
    
        printf("End of tester program for milestone one!\n");
        return 0;
        }
    
    
    /* End Commenting out the main out*/
    
    // implement your functions for milestone one down here:
    void welcome(void)
    {
        printf("---=== Grocery Inventory System ===---\n");
    
    }
    
    void prnTitle(void)
    {
        printf("Row |SKU| Name \t | Price |Taxed| Qty | Min |  Total  |Atn \n");
        printf("----+---+--------------------+--------+-----+-----+-----+------------+|---\n");
    
    }
    void prnFooter(double gTotal)
    {
        printf("--------------------------------------------------------+-----------------\n");
        //float  gTotal = 1234.57;
        while (gTotal > 0)
        {
            printf("%12.21f", gTotal);
        }
    }
    void clrKyb(void)
    {
        char b;
        while (b != '\n')
        {
            scanf("%c", &b);
        }
    
    }
    void pause(void)
    {
        printf("Press <Enter> to continue...");
    
        clrKyb();
    
    }
    int getInt(void)
    {
        //printf("Enter an interger:");
        int d;
        char c;
        scanf("%d%c", &d, &c);
        while (c != '\n')
        {
            printf("Invalid integer, please try again ");
            scanf("%d%c", &d, &c);
        }
        return d;
    }
    int getIntLimited(int lowerLimit, int upperLimit)
    {
        int a;
        //printf("Enter an integer between %d and %d:", lowerLimit, upperLimit);
        scanf("%d", &a);
        while (a <= lowerLimit || a >= upperLimit)
        {
        //  printf("Invalid value, %d < value < %d:", lowerLimit, upperLimit);
            scanf("%d", &a);
        }
        return a;
    }
    double getDbl(void)
    {
        double d;
        char c;
    //  printf("Enter a floating point number:");
        scanf("%lf,%c", &d, &c);
        while (c != '\n')
        {
            printf("Invalid number, please try again ");
            scanf("%lf%c", &d, &c);
        }
        return d;
    }
    
    double getDblLimited(double lowerLimit, double upperLimit)
    {
        double a;
        printf("Enter a floating point number between %f and %f:", lowerLimit, upperLimit);
        scanf("%lf", &a);
        while (a <= lowerLimit || a >= upperLimit)
        {
            printf("Invalid value, %f < value < %f:", lowerLimit, upperLimit);
            scanf("%lf", &a);
    
        }
        return a;
        return 0;
    }
    
    int main(无效)
    {
    国际竞争力;
    双dVal;
    欢迎();
    //测试程序()
    printf(“列出页眉和页脚,总计:\n”);
    prnTitle();
    //测试prnFooter()
    prnFooter(1234.5678);
    printf(“列出页眉和页脚,无总计:\n”);
    prnTitle();
    prnFooter(-1);
    //测试Pause()和clrKyb()
    暂停();
    //测试getInt()
    printf(“输入一个整数:”);
    iVal=getInt();
    printf(“您输入了:%d\n”,iVal);
    //测试有限公司
    printf(“输入一个介于10和20之间的整数:”);
    iVal=getIntLimited(10,20);
    printf(“您输入的%d\n”,iVal);
    //测试加倍
    printf(“输入浮点数:”);
    dVal=getDbl();
    printf(“您输入了:%0.2lf\n”,dVal);
    //Tesing Get Double Limited
    printf(“输入介于10.00和20.00之间的浮点数:”);
    dVal=getDblLimited(10.0,20.0);
    printf(“您输入了:%0.2lf\n”,dVal);
    printf(“里程碑1的测试程序结束!\n”);
    返回0;
    }
    /*结束对主要问题的评论*/
    //在此处实现里程碑1的功能:
    欢迎无效(无效)
    {
    printf(“--==杂货库存系统===-\n”);
    }
    作废文件(作废)
    {
    printf(“行| SKU |名称\t |价格|征税|数量|最小|总计| Atn\n”);
    printf(“---+---+----+----+----+----+----+----+----+----+----\n”);
    }
    无效prnFooter(双倍总)
    {
    printf(“---------------------------------------------------------------+--------------\n”);
    //浮球总重量=1234.57;
    而(G总计>0)
    {
    printf(“%12.21f”,g总计);
    }
    }
    无效clrKyb(无效)
    {
    字符b;
    而(b!='\n')
    {
    scanf(“%c”和“b”);
    }
    }
    作废暂停(作废)
    {
    printf(“按继续…”);
    clrKyb();
    }
    int getInt(无效)
    {
    //printf(“输入整数:”);
    int d;
    字符c;
    scanf(“%d%c”、&d和&c);
    而(c!='\n')
    {
    printf(“无效整数,请重试”);
    scanf(“%d%c”、&d和&c);
    }
    返回d;
    }
    int getIntLimited(int lowermit,int上限)
    {
    INTA;
    //printf(“输入一个介于%d和%d之间的整数:”,下限,上限);
    scanf(“%d”和“&a”);
    while(a=上限)
    {
    //printf(“无效值,%d<值<%d:”,下限,上限);
    scanf(“%d”和“&a”);
    }
    返回a;
    }
    双getDbl(void)
    {
    双d;
    字符c;
    //printf(“输入浮点数:”);
    扫描频率(“%lf,%c”、&d和&c);
    而(c!='\n')
    {
    printf(“无效号码,请重试”);
    扫描F(“%lf%c”,&d和c);
    }
    返回d;
    }
    双getDblLimited(双下限,双上限)
    {
    双a;
    printf(“输入介于%f和%f之间的浮点数:”,下限,上限);
    scanf(“%lf”、&a);
    while(a=上限)
    {
    printf(“无效值,%f<值<%f:”,下限,上限);
    scanf(“%lf”、&a);
    }
    返回a;
    返回0;
    }
    

    您永远不会在循环内修改
    gTotal
    的值。如果进入循环时它大于0,则它将永远大于0,从而形成无限循环

    你调试过无限循环发生在哪里吗?在main中,放置print语句以查看代码停止前进的位置。对不起,我的错误。错误开始于打印声明之后的void prnFooter谢谢,再次抱歉,我忘了提到错误的位置occured@ortz3NP不过,下次一定要充分描述问题。如果这对你有帮助,请投票并接受答案。
    void prnFooter(double gTotal)
    {
        printf("--------------------------------------------------------+-----------------\n");
        //float  gTotal = 1234.57;
        while (gTotal > 0)
        {
            printf("%12.21f", gTotal);
        }
    }