课程分数

题目描述

编写 CourseRecord 类,它保存一门课程的名字和成绩分数。它可以通过课程名和百分制成绩构造,通过 getCourseName 方法得到课程名,通过 getScore 方法得到百分制成绩,并通过 GPA 方法计算绩点。

绩点计算公式:
GPA(x) =
⎰ 4 - 3 × (100 - x)2 ÷ 1600,
⎱ 0,
x ≥ 60
x < 60

关于输入

共一行,为空格分隔的课程名和百分制成绩。课程名为不含空白字符的字符串,百分制成绩为 [0, 100] 中的整数。

关于输出

共三行。

第一行为 Course Name: xxx,其中 xxx 是输入的课程名。

第二行为 Score: yyy,其中 yyy 是百分制成绩。

第三行为 GPA: zzz,其中 zzz 是该课程的绩点,保留小数点后两位数字。

易错点

注意成员函数需要有 const 限定。

参考答案

#include <iostream>
#include <iomanip>
#include <cmath>

class CourseRecord {
    const char* name;
    double score;

public:
    CourseRecord(const char* name, double score) : name{name}, score{score} {}
    const char* getCourseName() const {
        return name;
    }
    double getScore() const {
        return score;
    }
    double GPA() const {
        if (score < 60) return 0.0;
        return 4 - 3 * std::pow(100 - score, 2) / 1600;
    }
};

int main() {
    char name[30];
    double score;
    std::cin >> name >> score;
    const CourseRecord record(name, score);
    std::cout << "Course Name: " << record.getCourseName() << std::endl;
    std::cout << "Score: " << record.getScore() << std::endl;
    std::cout << "GPA: " << std::fixed << std::setprecision(2) << record.GPA()
              << std::endl;
}