c Infinite loop error

The program builds properly, but I'm getting an infinite loop of random numbers and I'm not sure why. I

int getInt(void);
double getDbl(void);
void prnTitle(void);
void prnFooter(double gTotal);
void pause(void);
double getDblLimited(double lowerLimit, double upperLimit);
  • comment out the main when submitting milestone one
  • Your final milestone one should run perfectly with the following tester program.
  • To comment out the main() delete the next two characters after the arrow

    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: %dn", iVal);
    
    
        // Testing Get Int Limited
        printf("Enter an integer between 10 an 20: ");
        iVal = getIntLimited(10, 20);
        printf("Your entered %dn", iVal);
    
    
        // Testing Get Double
        printf("Enter a floating point number: ");
        dVal = getDbl();
        printf("You entered: %0.2lfn", 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.2lfn", 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;
    }
    

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

    You never modify the value of gTotal inside the loop. If it was greater than 0 going into the loop, it will be greater than 0 for forever, thus the infinite loop.

    链接地址: http://www.djcxy.com/p/72188.html

    上一篇: while循环在输入有效输入后挂起程序?

    下一篇: c无限循环错误