-1

100<a<200 和 100<b<200 的前两个条件执行得很好,但是两者都在 100 和 200 之间的条件不知道为什么?我的代码:

#include<stdio.h>
int main()
{
    int a,b;
    printf("Enter the first integer:");
    scanf("%d",&a);
    printf("Enter the second integer:");
    scanf("%d",&b);
    if (100<=a&&a<=200)
    {printf("The integer %d lies between 100 and 200",a);}
    else if (100<=b&&b<=200)
    {printf("The integer %d lies between 100 and 200",b);}
    else if((100<=a&&a<=200)&&(100<=b&&b<=200))
    {printf("Both of the integers lie between 100 and 200");}
    else
    {printf("The integers does not lie between 100 and 200");}
    return 0;
}

输出: 在此处输入图像描述

4

4 回答 4

0

例如 if 语句中的条件

if (100<=a&&a<=200) 

计算结果为逻辑真,那么其他 if-else 语句将不会被执行,包括这个 if 语句

else if((100<=a&&a<=200)&&(100<=b&&b<=200))

您需要从此语句开始 if-else 语句

if((100<=a&&a<=200)&&(100<=b&&b<=200))
{printf("Both of the integers lie between 100 and 200");}
else if (100<=a&&a<=200)
{printf("The integer %d lies between 100 and 200",a);}
else if (100<=b&&b<=200)
{printf("The integer %d lies between 100 and 200",b);}
else
{printf("The integers does not lie between 100 and 200");}
于 2021-04-30T21:20:47.910 回答
0

我建议您重新阅读 if-else 的基础知识。使用 if-else 时,会按顺序检查条件,一旦其中一个匹配,则执行该块,其余的将被忽略。

在您的情况下,当 100<a<200 和 100<b<200 时,它与第一个块匹配,因此它不检查其他条件。

最简单的解决方法是先从if((100<=a&&a<=200)&&(100<=b&&b<=200))其他else if条件开始。

于 2021-04-30T21:21:30.637 回答
0

仅当其关联条件评估else为 时才考虑块。if0

在您的情况下,如果 a 和 b 都介于 100 和 200 之间,则将采用第一个if (100<=a&&a<=200),然后跳过其 else 块。如果您编写 if-else 块而不省略括号,它可能会帮助您了解为什么会出现这种情况:

if (100<=a && a<=200){
    printf("The integer %d lies between 100 and 200",a);
} else {
    if (100<=b && b<=200) {
        printf("The integer %d lies between 100 and 200",b);
    } else {
        if((100<=a && a<=200) && (100<=b && b<=200)) {
            printf("Both of the integers lie between 100 and 200");
        } else {
            printf("The integers does not lie between 100 and 200");
        }
    }
}
于 2021-04-30T21:22:29.210 回答
0

因为您需要更多地了解c 中的 if 和 else 语句您所写的意思是如果 a 在 [100...200] 之间,如果不检查 b 是否在 [100..200] 之间,如果不检查这两个条件你只是忽略了?

我建议你像这样使用布尔值,所以如果你看不到它就足够明显了

#include<stdio.h>
int main()
{
int a,b;
printf("Enter the first integer:");
scanf("%d",&a);
printf("Enter the second integer:");
scanf("%d",&b);
int x,y;
x=100<=a&&a<=200; // returns 1 if it's between 100 and 200
y=100<=b&&b<=200; // returns 1 if it's between 100 and 200
if ((x==1) && (y==1))
printf("Both of the integers lie between 100 and 200");
else {
  if(x==1)
     printf("The integer %d lies between 100 and 200",a);
  else if (y==1) 
     printf("The integer %d lies between 100 and 200",b);
  else 
    printf("The integers does not lie between 100 and 200");}
}

注意:如果您在每个条件或循环中有一个语句,则打开括号是没有用的

于 2021-04-30T21:22:49.333 回答