c do while循环不起作用?

时间:2010-03-21 15:13:26

标签: c

do
{
    printf("Enter number (0-6): ", "");
    scanf("%d", &Num);
}while(Num >= 0 && Num <=6);

任何想法?

4 个答案:

答案 0 :(得分:5)

你误解了你的循环。

您的代码如下所示:

  

某事虽然(只要)num大于(或等于)零且num小于(或等于)六

C编译器正在监听你的代码并完全按照你所做的那样(错误地)告诉它,只要数字介于0到6之间就可以保持循环。

只要数字在0到6之间,你实际上希望它保持循环,所以你实际上希望代码看起来像这样:

  

某事虽然num 小于 0或num <6>

一旦用户输入 在0到6之间的数字,代码将看到num既不小于0也不大于6,因此它将停止循环。 (因为条件是假的)

你应该能够自己编码。
提示:>表示“超过”,<表示“小于”,||表示“或”。

答案 1 :(得分:3)

只要将Num声明为int。

,它对我来说就完全没问题
#include <stdio.h>
int main()
{
    int Num;
    do
    {
    printf("Enter number (0-6): ", "");
    scanf("%d", &Num);
    } while(Num >= 0 && Num <=6);

    printf("Done.\n");

    return 0;
}

您是否将Num声明为char?

@tom:这是我编译代码的示例会话;你跑的时候有什么不同?

$ gcc a.c && ./a.out
Enter number (0-6): 0
Enter number (0-6): 1
Enter number (0-6): 2
Enter number (0-6): 3
Enter number (0-6): 4
Enter number (0-6): 5
Enter number (0-6): 6
Enter number (0-6): 7
Done.

答案 2 :(得分:0)

也许您需要在getchar之后添加scanf以从键盘缓冲区中删除'\ n':

do
{
    printf("Enter number (0-6): ", "");
    scanf("%d", &Num);
    getchar();
} while(Num >= 0 && Num <=6);

希望它有所帮助。

答案 3 :(得分:0)

这段代码和我一起工作正常,我已经运行了你的程序,用户只能输入0到6之间的值,在此范围内工作时,在其他值循环中断。