代码:
#include <stdio.h>
int GetPositiveInt();
int main(void)
{
int height = GetPositiveInt();
int i =0;
int counter = 1;
printf("height: %d \n" ,height );
for (i = 0; i < height ; i++)
{
printf("#\n");
counter++;
}
}
int GetPositiveInt(void)
{
int height ;
do
{
printf("please enter a non negetive integer no greater than 23 \n ");
height = GetInt();
}
while (( height < 0 ) && (height > 24) );
return height;
}
这里,在函数GetPositiveInt
中,如果我输入任何大于23或小于1的数字,我希望do while
循环起作用,并且由于某种原因,只有高度为{{1}的while循环工作。
答案 0 :(得分:2)
此行在逻辑上不正确:
while (( height < 0 ) && (height > 24) );
高度不能小于零且大于24,因此您需要使用或运算符:
while (( height < 1 ) || (height > 23) ); // Height is less than 1 or greater than 23
答案 1 :(得分:1)
如果输入任何高于23 或的数字,我希望循环起作用 低于1
您需要将while循环条件更改为
while (( height < 1 ) || (height > 23) ); //below 1 or above 23
所以它会起作用。