为了账号安全,请及时绑定邮箱和手机立即绑定

为什么输出的全是“成绩为优”

#include<stdio.h>

#include<iostream>

int main() {

int a;

std::cin >> a;

if (90 <= a <=100) {

printf("成绩为优!");

}

else if (75<= a <90) {

printf("成绩为良!");

}

else if (60<= a < 75) {

printf("成绩为中!");

}

else if(0 <= a <60) {

printf("成绩为差!");

}

return 0;

}



正在回答

1 回答

因为慕课网这个运行程序没有终端,也就是说程序在执行到 std::cin >> a; 这句代码的时候没办法获取输入,所以变量 a 应该没有被赋值,也就是说它的值是个随机值,可以把它的值打印出来:
https://img1.sycdn.imooc.com/659abf520001483a21941220.jpg
可以看到变量 a 的值是 21990,是大于 90 的,另外“输出的全是优”这个问题的关键在于:
在 C++ 中,部分数学判断表达式是不能直接写的,不符合程序语法,例如:

90 <= a <= 100 就是个错误的写法,正确的写法是:a >= 90 && a <= 100 。
你的 “90 <= a <= 100 ”的写法其实相当于一个表达式,即:(90 <= a) <= 100。程序执行时候是从左向右读取和执行的,所以先会读取 90 <= a 的结果,因为 a = 21990 是 >= 90 的,所以 (90 <= a) 的值就是 1,而 1 <= 100 又是 true,所以最终的结果是 1,因为条件为真,所以会执行到这个分支。
同时,由于 if-else 分支的语法特性,只会执行一个分支,所以在 if 条件为真的时候,只会执行 if 分支,其他的 else if 和 else 分支就不会执行了,所以导致了 “输出的全是优”。
可以自己打印下这个结果看下:
https://img1.sycdn.imooc.com/659ac1bb0001771121780856.jpg

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为什么输出的全是“成绩为优”

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信