为什么赢了';我的while循环在这个c代码中启动了吗?

为什么赢了';我的while循环在这个c代码中启动了吗?,c,C,我是c语言编程新手,但我不明白为什么这段代码在编译后不能正常运行。现在,我只想让它取10到100之间的数字,没有错误。然后,稍后我将为错误添加return 1,为成功添加return 0 #include <stdio.h> #include <stdlib.h> int intGet(int, int); int error(); int main(void) { int Min, Max, UserIn; Min = 10; Max = 1

我是c语言编程新手,但我不明白为什么这段代码在编译后不能正常运行。现在,我只想让它取10到100之间的数字,没有错误。然后,稍后我将为错误添加return 1,为成功添加return 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()
{

}
#包括
#包括
int-int-get(int,int);
int错误();
内部主(空)
{
int-Min,Max,UserIn;
最小值=10;
最大值=100;
printf(“输入介于[10-100]:\n]之间的数字”);
scanf(“%d”、&UserIn);
printf(“读取%d\n”,UserIn);
while(UserInMax)
{
printf(“无效\n”);
scanf(“%d”、&UserIn);
}
/*我做了什么来修复
而((UserIn>Min)| |(UserIn最大值)){
printf(“无效\n”);
scanf(“%d”、&UserIn);
printf(“读取%d\n”,UserIn);
}
}*/
返回退出成功;
}
int intGet(int min,int max)
{
}
int错误()
{
}
while(UserInMax)

userIn
永远不能同时满足这两个条件。将其更改为:

whiche(userInMax)
whiche(userInMax)

userIn
永远不能同时满足这两个条件。将其更改为:

whiche(userInMax)

更换

while (UserIn<Min && UserIn>Max){
while(UserInMax){
与:

while(UserInMax){
您还可以用do…while替换while循环。这样您就不会有双扫描

while (UserIn<Min && UserIn>Max){
while(UserInMax){
与:

while(UserInMax){

您还可以将while循环替换为do…while。这样您就不会有双扫描功能。您是否意识到
scanf
会返回值?请参阅

如果它不返回1,那么您需要“吃”一些输入

最好读入一个字符串并解析它

while(UserInMax)
应该是

while (UserIn < Min || UserIn > Max)
while(UserInMax)

您是否意识到
scanf
确实返回值?请参阅

如果它不返回1,那么您需要“吃”一些输入

最好读入一个字符串并解析它

while(UserInMax)
应该是

while (UserIn < Min || UserIn > Max)
while(UserInMax)

要帮助您调试,请尝试以下代码:

while ((UserIn < Min) || (UserIn > Max))
{
    printf("Invalid \n");
    scanf("%d", &UserIn);
    printf("Read %d\n", UserIn);
}
while((UserInMax))
{
printf(“无效\n”);
scanf(“%d”、&UserIn);
printf(“读取%d\n”,UserIn);
}

此外,只有当Userin的第一个输入值小于10或大于100时,此while循环才会运行。

若要帮助您调试,请尝试以下代码:

while ((UserIn < Min) || (UserIn > Max))
{
    printf("Invalid \n");
    scanf("%d", &UserIn);
    printf("Read %d\n", UserIn);
}
while((UserInMax))
{
printf(“无效\n”);
scanf(“%d”、&UserIn);
printf(“读取%d\n”,UserIn);
}


此外,只有当Userin的第一个输入值小于10或大于100时,此while循环才会运行。

除非最小值大于最大值,否则数字不能同时小于最小值和大于最大值。Try或(
|
)。除非最小值大于最大值,否则数字不能同时小于最小值和大于最大值。Try或(
|
)。您是否输入了超出范围的数字(例如<0或>100)?不,我没有。这两种方法都不起作用。我正在试验do,以查看是否使用调试器考虑了任何变化?我刚刚测试了您的代码。该程序对[1-100]范围内的所有数字都能正常工作包含在内,工作正常,我的意思是它显示“无效”错误消息。@TatakaiWasumi-是的,它会-您会看到执行正在进行您不希望执行的某个地方。您是否输入了超出范围的数字(例如<0或>100)?不,我没有。这两种方法都不起作用。我正在试用do while,以查看是否有任何变化。我使用调试器考虑了这些变化。我刚刚测试了您的代码。该程序对[1-100]范围内的所有数字都能正常工作包含在内,工作正常,我的意思是它显示“无效”错误消息。@TatakaiWasumi-是的,它会-你会看到执行在你不希望它去的地方。如果满足10-100之间的条件,为什么它不继续循环并要求更多的输入?@TatakaiWasumi,因为如果UserIn正常,谢谢,我使用了你的代码是为了让程序通过将其放入第一个while循环来检查这两个条件是否都为真。这只是一个愚蠢的逻辑错误。如果满足10-100之间的条件,为什么它不继续循环并要求更多的输入?@TatakaiWasumi,因为如果UserIn是Ok的,谢谢,我使用你的代码让程序检查这两个条件是否都为c通过将条件放入第一个while循环,它是正确的。这只是一个愚蠢的逻辑错误。