使用C中的Do While循环时出现奇怪的问题

时间:2012-10-08 07:34:50

标签: c loops do-while

当我尝试移动我的Do循环或添加另一个循环来嵌套它时,我遇到了一个奇怪的问题。我把DO放在你看到它的地方下面,它很好地循环:

{
    float numbers[MAX_DATA];
    printf("Please Eneter the Amount of Numbers You Would Like to Use\n");
    scanf("%d",&amount);
    if (amount>MAX_DATA)
    {
        printf("Your entry was too big");
    }
    else
    {
        input(numbers,amount);
        do
        {
            printf("\nStatistical Calculator Menu\n");
            printf("\n(1) Mean\n(2) Standard Deviation\n(3) Range\n(4) Restart/Exit\n");
            scanf("%d",&input2);
            if (input2==1)
            {
                mean(numbers,amount);
            }
            else if (input2==2)
            {
                standard(numbers,amount);
            }
            else if (input2==3)
            {
                range(numbers,amount);
            }
            else if(input2==4)
            {
                printf("Would You Like to (5)Restart or (6)Quit?");
                scanf("%d",&input2);
            }
        }
        while(input2!=4);
    }
    getch();
    return 0;
}

但是如果我把它放在这里或者添加一个额外的do循环来嵌套它,我得到一个“期望在getch之前”的错误。

{
    int amount=0;
    int input2;
    do
    {
        float numbers[MAX_DATA];
        printf("Please Eneter the Amount of Numbers You Would Like to Use\n");
        scanf("%d",&amount);
        if (amount>MAX_DATA)
        {
            printf("Your entry was too big");
        }
        else
        {
            input(numbers,amount);
            printf("\nStatistical Calculator Menu\n");
            printf("\n(1) Mean\n(2) Standard Deviation\n(3) Range\n(4) Restart/Exit\n");
            scanf("%d",&input2);
            if (input2==1)
            {
                mean(numbers,amount);
            }
            else if (input2==2)
            {
                standard(numbers,amount);
            }
            else if (input2==3)
            {
                range(numbers,amount);
            }
            else if(input2==4)
            {
                printf("Would You Like to (5)Restart or (6)Quit?");
                scanf("%d",&input2);
            }
        }
        while(input2!=4);
    }
    getch();
    return 0;
}

为什么我会收到此错误?

1 个答案:

答案 0 :(得分:3)

请学习如何使用缩进(C代码美化)。

您的缩进和逻辑流程完全不同。

首先,为什么第一个缩进和相应的else应该在缩进的同一级别。

错误的原因是do循环是if语句的“else”部分的一部分。但是你缩进它就像你想要它一直执行一样。