qq_慕的地2560883
2023-11-28 22:27
#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;
}
因为慕课网这个运行程序没有终端,也就是说程序在执行到 std::cin >> a; 这句代码的时候没办法获取输入,所以变量 a 应该没有被赋值,也就是说它的值是个随机值,可以把它的值打印出来:
可以看到变量 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 分支就不会执行了,所以导致了 “输出的全是优”。
可以自己打印下这个结果看下:
趣味 C++ 入门
31573 学习 · 191 问题
相似问题