我是c语言编程的新手,但我不明白为什么编译后这段代码无法正常运行。现在,我只想让它在没有错误的情况下取10到100之间的数字。然后我会为错误添加返回1,为成功添加0。
#include <stdio.h>
#include <stdlib.h>
int intGet(int, int);
int error();
int main(void)
{
int Min, Max, UserIn;
Min = 10;
Max = 100;
printf("Enter a number in between [10 -100]: \n");
scanf("%d", &UserIn);
printf("Read %d\n", UserIn);
while (UserIn < Min && UserIn > Max)
{
printf("Invalid \n");
scanf("%d", &UserIn);
}
/* What I did to fix
while ((UserIn > Min) || (UserIn < Max)){
printf("Enter a number in between [10 -100]: \n");
scanf("%d",&UserIn);
printf("Read %d\n",UserIn);
while ((UserIn < Min) || (UserIn > Max)){
printf("Invalid \n");
scanf("%d", &UserIn);
printf("Read %d\n", UserIn);
}
}*/
return EXIT_SUCCESS;
}
int intGet(int min, int max)
{
}
int error()
{
}
答案 0 :(得分:2)
while (UserIn < Min && UserIn > Max)
userIn
永远无法满足这两个条件。将其更改为:
whihe (userIn < Min || userIn > Max)
答案 1 :(得分:1)
您是否意识到scanf
确实返回了值?见http://linux.die.net/man/3/scanf
如果它没有返回1那么你需要“吃掉”一些输入。
最好读取字符串并解析它。
另外
while (UserIn < Min && UserIn > Max)
应该是
while (UserIn < Min || UserIn > Max)
答案 2 :(得分:0)
替换
while (UserIn<Min && UserIn>Max){
使用:
while (UserIn<Min || UserIn>Max){
你也可以用do ... while替换你的while循环。那你就不会有双重扫描
答案 3 :(得分:0)
为了帮助您调试此问题,请尝试以下代码:
while ((UserIn < Min) || (UserIn > Max))
{
printf("Invalid \n");
scanf("%d", &UserIn);
printf("Read %d\n", UserIn);
}
此外,只有当Userin的第一个输入值为&lt;时,此while循环才会运行。 10或&gt; 100。