C++ if/else if分支判断GPA所属分类时输出结果不符合预期问题
问题根源
- 变量类型定义错误
你将GPA声明为int整数类型,只能存储整数值,无法匹配代码里用到的3.7、3.4这类浮点阈值的判断需求,就算输入带小数的GPA也会被自动截断为整数。
- 变量类型定义错误
- 多条件比较语法错误
C++不支持3.7 <= GPA <=4这类连续比较写法,这类表达式会从左到右依次计算:先判断3.7 <= GPA得到布尔值(真为1,假为0),再用这个布尔值和后面的4比较,比如你输入GPA为2时,3.7 <= 2结果为假(值为0),0 <=4结果为真,所以第一个if分支直接触发,才会错误输出First Class Honors。
- 多条件比较语法错误
修正后的代码
#include<iostream> using namespace std; int main(){ double GPA; // 改为浮点类型存储带小数的GPA cout << "What is your GPA?: "; cin >> GPA; // 所有连续比较拆分为两个条件用逻辑与&&连接 if (3.7 <= GPA && GPA <= 4) { cout << "First Class Honors\n"; } else if (3.4 <= GPA && GPA < 3.7) { cout << "Second Up Class Honors\n"; } else if (3 <= GPA && GPA < 3.4) { cout << "Second Low Class Honors\n"; } else if (2.7 <= GPA && GPA < 3) { cout << "Third Class Honors\n"; } else if (GPA < 2.7) { cout << "Pass\n"; } return 0; }
内容的提问来源于stack exchange,提问作者daiman00
相关产品推荐
相关产品推荐

