c无限循环错误

时间:2016-11-04 21:48:23

标签: c

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

int getInt(void);
double getDbl(void);
void prnTitle(void);
void prnFooter(double gTotal);
void pause(void);
double getDblLimited(double lowerLimit, double upperLimit);
  1. 在提交里程碑一
  2. 时评论主要内容
  3. 您的最终里程碑应与以下测试程序完美匹配。
  4. 注释掉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;
    }
    

1 个答案:

答案 0 :(得分:0)

void prnFooter(double gTotal)
{
    printf("--------------------------------------------------------+-----------------\n");
    //float  gTotal = 1234.57;
    while (gTotal > 0)
    {
        printf("%12.21f", gTotal);
    }
}

您永远不会修改循环内gTotal的值。如果它大于0进入循环,它将永远大于0,因此无限循环。