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
相关产品推荐
相关产品推荐

