C 中的非函数 do while 循环
Non-function do while loop in C
我是编程新手,希望能得到一些帮助。我试图在 C 中创建一个 'do while' 循环作为我的 CS50 问题集的一部分。我试图在 'while' 下使用两种不同的条件,但由于某些原因它们没有被识别。这是我的代码
#include <stdio.h>
#include <cs50.h>
int get_height(void);
int main(void)
{
int height = get_height();
printf("you picked %i\n", height);
}
int get_height(void)
{
int height;
do
{
height = get_int("enter height\n");
}
while (height > 8 && height < 1);
return height;
}
我试图强制用户键入一个小于 8 但大于 0 的整数。如果我排除两个条件中的任何一个,则该条件有效。但是,如果我尝试同时使用这两种条件,代码会编译并运行,但它不会强制我在指定的参数范围内输入数字。我可以输入任何数字,它会被接受。有人可以帮忙吗?
编辑:
我很尴尬。我误解了 AND 运算符的工作原理。
这些是互斥的:
while (height > 8 && height < 1);
你可能想要:
while (height > 8 || height < 1);
现在如果值大于 8 或小于 1,循环将继续。
您的情况 "continue the loop if height
is larger than 8 AND height
is smaller than 1"。该条件永远不会为真,因此循环在第一次迭代后退出。
你要的是"continue the loop if height
is larger than 8 OR height
is smaller than 1"
while (height > 8 || height < 1);
我觉得数学还没有找到一个可以同时小于1又大于8的整数
while (height > 8 && height < 1);
很明显你的意思
while (height > 8 || height < 1);
但是为了让您自己更清楚地了解这样的条件,有时首先写下正在搜索数字的条件是很有用的。
你需要一个在[1, 8]范围内的数字,即目标数字满足条件
1 <= height && height <= 8
在这种情况下,do-while 语句中的条件将否定上述条件。
while ( !( 1 <= height && height <= 8 ) );
现在如果删除否定你将有
while ( !( 1 <= height ) || !( height <= 8 ) );
相当于
while ( 1 > height || height > 8 );
所以要么使用
while ( !( 1 <= height && height <= 8 ) );
pr
while ( 1 > height || height > 8 );
我是编程新手,希望能得到一些帮助。我试图在 C 中创建一个 'do while' 循环作为我的 CS50 问题集的一部分。我试图在 'while' 下使用两种不同的条件,但由于某些原因它们没有被识别。这是我的代码
#include <stdio.h>
#include <cs50.h>
int get_height(void);
int main(void)
{
int height = get_height();
printf("you picked %i\n", height);
}
int get_height(void)
{
int height;
do
{
height = get_int("enter height\n");
}
while (height > 8 && height < 1);
return height;
}
我试图强制用户键入一个小于 8 但大于 0 的整数。如果我排除两个条件中的任何一个,则该条件有效。但是,如果我尝试同时使用这两种条件,代码会编译并运行,但它不会强制我在指定的参数范围内输入数字。我可以输入任何数字,它会被接受。有人可以帮忙吗?
编辑: 我很尴尬。我误解了 AND 运算符的工作原理。
这些是互斥的:
while (height > 8 && height < 1);
你可能想要:
while (height > 8 || height < 1);
现在如果值大于 8 或小于 1,循环将继续。
您的情况 "continue the loop if height
is larger than 8 AND height
is smaller than 1"。该条件永远不会为真,因此循环在第一次迭代后退出。
你要的是"continue the loop if height
is larger than 8 OR height
is smaller than 1"
while (height > 8 || height < 1);
我觉得数学还没有找到一个可以同时小于1又大于8的整数
while (height > 8 && height < 1);
很明显你的意思
while (height > 8 || height < 1);
但是为了让您自己更清楚地了解这样的条件,有时首先写下正在搜索数字的条件是很有用的。
你需要一个在[1, 8]范围内的数字,即目标数字满足条件
1 <= height && height <= 8
在这种情况下,do-while 语句中的条件将否定上述条件。
while ( !( 1 <= height && height <= 8 ) );
现在如果删除否定你将有
while ( !( 1 <= height ) || !( height <= 8 ) );
相当于
while ( 1 > height || height > 8 );
所以要么使用
while ( !( 1 <= height && height <= 8 ) );
pr
while ( 1 > height || height > 8 );