非函数在 C 中循环



我是编程新手,希望能得到一些帮助。我正在尝试在 C 中创建一个"dowhile"循环,作为我的 CS50 问题集的一部分。我试图在"while"下使用两种不同的条件,但由于某种原因,它们没有被识别。这是我的代码

#include <stdio.h>
#include <cs50.h>
int get_height(void);
int main(void)
{
int height = get_height();
printf("you picked %in", height);
}
int get_height(void)
{
int height;
do
{
height = get_int("enter heightn");
}
while (height > 8 && height < 1);
return height;
}

我试图强制用户键入一个小于 8 但高于 0 的整数。如果我去掉两个条件中的任何一个,这个条件就有效。但是,如果我尝试同时使用这两个条件,代码会编译并运行,但它不会强制我在指定的参数中输入数字。我可以输入任何数字,它将被接受。谁能帮忙?

编辑: 我很尴尬。我误解了 AND 运算符的工作原理。

您的条件显示"如果height大于 8 且height小于 1,则继续循环"。 该条件永远不会成立,因此循环在第一次迭代后退出。

你想要的是"如果height大于 8 或height小于 1,则继续循环">

while (height > 8 || height < 1);

这些是互斥的:

while (height > 8 && height < 1);

您可能希望:

while (height > 8 || height < 1);

现在,如果该值大于 8 或小于 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 ) );

公关

while ( 1 > height || height > 8 );

相关内容

  • 没有找到相关文章

最新更新