You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++ if/else if分支判断GPA所属分类时输出结果不符合预期问题

问题根源

    1. 变量类型定义错误
      你将GPA声明为int整数类型,只能存储整数值,无法匹配代码里用到的3.7、3.4这类浮点阈值的判断需求,就算输入带小数的GPA也会被自动截断为整数。
    1. 多条件比较语法错误
      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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 01:36:02