C中if else语句的问题

Problems in if else statements in C

#include<stdio.h>
#include<stdlib.h>

int main(){

int month, day;
printf("Enter the input : ");
scanf("%d %d",&month,&day);

if (day == 1 &&  month==1 || month == 2 || month == 3 || month ==4){
    printf("Green\n");
}
else if(day == 2 && month == 5 || month == 6 || month ==7 || month ==8 ){
    printf("Red");
}

return 0;
}

在上面的代码中,每当我选择 d = 1month = 1-4 时,它应该正确打印绿色。问题是当我选择 day = 2 & month = 8 or 7 or 6 时,它应该打印 red 但它正在打印 green。我在这里遗漏了什么吗?

你需要检查不同的日期和月份。 试试这个:

if (day == 1 &&  (month==1 || month == 2 || month == 3 || month ==4)){
    printf("Green\n");
}
else if(day == 2 && (month == 5 || month == 6 || month ==7 || month ==8)){
    printf("Red");
}

正如您所料,一切正常。
也许,您忘记了您的第一个输入是 monthday 是第二个。 现在再试一次。

#include <stdio.h> 
#include<stdlib.h> 
int main(){ 
int month, day; 
printf("Enter the input : "); 
scanf("%d %d",&month,&day); 
if ((day == 1 && month==1) || month == 2 || month == 3 || month ==4)
{ printf("Green\n"); } 
else if(day == 2 && month == 5 || month == 6 || month ==7 || month ==8 ){ 
printf("Red"); } 
return 0; 
}