do
{
printf("Enter number (0-6): ", "");
scanf("%d", &Num);
}while(Num >= 0 && Num <=6);
任何想法?
答案 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之间的值,在此范围内工作时,在其他值循环中断。