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

C++ GPA计算作业问题:四科分数转绩点后求平均值判断是否挂科

GPA计算作业修改方案

核心修改点

  • 修改convert函数返回值为int,返回单门课程的GPA绩点,非法输入返回-1用于校验
  • 将原char类型的绩点变量改为数值类型,支持累加计算
  • 补全C++语法规范:修正main函数返回值声明,去掉convert函数内多余的嵌套大括号
  • main函数中新增GPA累加变量,调用4次convert函数后计算平均值
  • 新增挂科判断逻辑:默认平均GPA低于1.0判定为挂科,可根据作业要求调整阈值

修改后完整代码

#include <iostream>
using namespace std;

// 函数返回单门课的GPA,非法输入返回-1
int convert()
{
    int score;
    char letterGrade;
    int gpa; // 改为int类型存储绩点,方便计算
    
    cout << "Please enter a score." << endl;
    cin >> score;
    
    if (score<0 || score > 100)
    {
        cout << "Test scores must be between 0-100. " << endl;
        return -1;
    }
    else if (score < 50)
    {
        letterGrade = 'E';
        gpa = 0;
    }
    else if (score < 60)
    {
        letterGrade = 'D';
        gpa = 1;
    }
    else if (score < 70)
    {
        letterGrade = 'C';
        gpa = 2;
    }
    else if (score < 80)
    {
        letterGrade = 'B';
        gpa = 3;
    }
    else
    {
        letterGrade = 'A';
        gpa = 4;
    }
    
    cout << "对应字母等级:" << letterGrade << endl;
    cout << "对应单门GPA:" << gpa << endl;
    return gpa;
}

int main()
{
    int totalGpa = 0;
    // 调用4次成绩转换函数
    for(int i=0;i<4;i++){
        int currentGpa = convert();
        if(currentGpa != -1){
            totalGpa += currentGpa;
        }
    }
    float avgGpa = (float)totalGpa / 4;
    cout << "4门课平均GPA为:" << avgGpa << endl;
    // 挂科判定,可根据作业要求调整阈值
    if(avgGpa < 1.0){
        cout << "最终结果:挂科" << endl;
    }else{
        cout << "最终结果:未挂科" << endl;
    }
    return 0;
}

补充说明

如果作业要求存在任意一门成绩低于60分直接判定挂科,可在main函数中新增标志位,每次调用convert时判断返回值是否小于1,满足条件直接标记为挂科即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 10:39:03