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

C++成绩查询程序while循环与else if分支失效、仅单次运行问题

代码修复方案

原有代码缺陷

  • 无外层循环结构:输入、计算、输出逻辑仅执行一次,无法实现多次查询成绩的需求
  • 等级判断逻辑错误:所有区间判断错误使用逻辑或||,而非限定区间需要的逻辑与&&,同时区间边界设置混乱,导致所有符合条件的总分都会命中第一个A等级分支,后续判断完全失效
  • 总分输出异常:仅打印了"total"字符串,未输出实际计算得到的总分数值
  • 无程序退出入口:如果增加循环功能,未提供用户主动退出程序的路径

修复后完整可运行代码

#include <iostream>
#include <iomanip>
using namespace std;

int main()
{
    char quitFlag;
    // 外层死循环支持多次查询
    while (true) {
        int midterm;
        int final;

        cout << "请输入期中成绩:";
        cin >> midterm;
        // 期中成绩合法性校验
        while (midterm < 0 || midterm > 200) {
            cout << "输入无效,成绩范围为0-200,请重新输入期中成绩:";
            cin >> midterm;
        }

        cout << "请输入期末成绩:";
        cin >> final;
        // 期末成绩合法性校验
        while (final < 0 || final > 200) {
            cout << "输入无效,成绩范围为0-200,请重新输入期末成绩:";
            cin >> final;
        }

        int total = midterm + final;
        cout << "总成绩为:" << total << endl;

        // 修正后的等级判断逻辑
        if (total >= 360 && total <= 400) {
            cout << "你的字母等级为 A" << endl;
        } else if (total >= 320 && total < 360) {
            cout << "你的字母等级为 B" << endl;
        } else if (total >= 280 && total < 320) {
            cout << "你的字母等级为 C" << endl;
        } else if (total >= 240 && total < 280) {
            cout << "你的字母等级为 D" << endl;
        } else {
            cout << "你的字母等级为 F" << endl;
        }

        // 退出逻辑
        cout << "是否继续查询?输入y继续,输入n退出:";
        cin >> quitFlag;
        if (quitFlag == 'n' || quitFlag == 'N') {
            break;
        }
    }
    return 0;
}

内容的提问来源于stack exchange,提问作者Colton Gil

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 01:27:03