课程分数
题目描述
编写 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;
}