关于if else和switch的使用

关于if else和switch的使用,我遇到了以下问题,不知道如何解决
#include
int main()
{
int y, x;
printf("请输入学生成绩:");
scanf("%d", &x);
if (90 <=x < 100)
y = 1;
else
if (80<=x< 90)
y = 2;
else
if (70 <=x < 80)
y = 3;
else
if (60 <=x < 70)
y = 4;
else
if (50 <=x < 60)
y = 5;
switch (y)
{
case 1:
printf("成绩是 %d,相应的等级是A\n",x);
break;
case 2:
printf("成绩是 %d,相应的等级是B\n", x);
break;
case 3:
printf("成绩是 %d,相应的等级是C\n", x);
break;
case 4:
printf("成绩是 %d,相应的等级是D\n", x);
break;
case 5:
printf("成绩是 %d,相应的等级是F\n", x);
break;
default:break;
}
return 0;
}

img

img

90<=x<100是错误写法,写成 if(x>=90 && x<100)
后面的也一样。
90<=x<100就成逻辑判断了,假设x=95,则x>=90成立,为真,即1,1<100成立,所以整个表达式为真。x=85也一样,0<100,最终表达式还是真。
有帮助的话采纳一下哦!