我的 do while 循环不满足这两个要求
my do while loop isnt meeting both requirements
当我试图获取我的变量的输入时,它只满足一个要求(即:< 1
要求)并跳过另一个要求,即使我使用 &&
运算符。
#include <cs50.h>
#include <stdio.h>
int main(void)
{
int x;
do {
x = get_int("what is the height of the pyramid?:");
} while (x > 0 && x < 8);
printf("%i", x);
}
我尝试只使用 x < 8
作为要求,但当我输入 9
、10
、11
等时它仍然通过
如果你想让x
在之间0和8之间(两端互斥),那么你需要在这个条件[=20时重复请求输入=]不满意。
换句话说,当x
超出这个范围时,意味着x
小于或等于0 或大于或等于8 .
也就是说,我认为该问题集的正确输入范围实际上是 1-8(包括两端):
do {
x = get_int("What is the height of the pyramid?: ")
} while (x < 1 || x > 8);
测试与你的意图恰恰相反。 do
/while
条件应测试重复输入的条件并写入 while (!(x > 0 && x < 8));
或等同于:while (x < 1 || x >= 8);
不清楚您的要求是什么,但似乎数量应该在 1
和 7
之间(含)。如果应包含 8
,则应将测试修改为 while (!(x > 0 && x <= 8));
或等同于:while (x < 1 || x > 8);
do
/while
循环通常令人困惑且容易出错。我建议在满足条件时使用 for(;;)
又名 for ever 循环和 break
语句:
#include <cs50.h>
#include <stdio.h>
int main(void)
{
int x;
for (;;) {
x = get_int("What is the height of the pyramid? ");
if (x == INT_MAX) {
printf("Input error or end of file\n");
return 1;
}
if (x > 0 && x < 8) {
break
}
printf("The height should be between 1 and 7\n");
}
printf("%i\n", x);
return 0;
}
当我试图获取我的变量的输入时,它只满足一个要求(即:< 1
要求)并跳过另一个要求,即使我使用 &&
运算符。
#include <cs50.h>
#include <stdio.h>
int main(void)
{
int x;
do {
x = get_int("what is the height of the pyramid?:");
} while (x > 0 && x < 8);
printf("%i", x);
}
我尝试只使用 x < 8
作为要求,但当我输入 9
、10
、11
等时它仍然通过
如果你想让x
在之间0和8之间(两端互斥),那么你需要在这个条件[=20时重复请求输入=]不满意。
换句话说,当x
超出这个范围时,意味着x
小于或等于0 或大于或等于8 .
也就是说,我认为该问题集的正确输入范围实际上是 1-8(包括两端):
do {
x = get_int("What is the height of the pyramid?: ")
} while (x < 1 || x > 8);
测试与你的意图恰恰相反。 do
/while
条件应测试重复输入的条件并写入 while (!(x > 0 && x < 8));
或等同于:while (x < 1 || x >= 8);
不清楚您的要求是什么,但似乎数量应该在 1
和 7
之间(含)。如果应包含 8
,则应将测试修改为 while (!(x > 0 && x <= 8));
或等同于:while (x < 1 || x > 8);
do
/while
循环通常令人困惑且容易出错。我建议在满足条件时使用 for(;;)
又名 for ever 循环和 break
语句:
#include <cs50.h>
#include <stdio.h>
int main(void)
{
int x;
for (;;) {
x = get_int("What is the height of the pyramid? ");
if (x == INT_MAX) {
printf("Input error or end of file\n");
return 1;
}
if (x > 0 && x < 8) {
break
}
printf("The height should be between 1 and 7\n");
}
printf("%i\n", x);
return 0;
}