题目内容:
根据下面部分代码,补充完成学生成绩类Score。在主函数中定义学生成绩对象数组。用Sum()计算每个学生的总成绩、用Show()显示每个学生的成绩。增加静态成员函数getAvg(),用于返回学生的总平均分。
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <iomanip>
using namespace std;
class Score {
private:
int Chinese, Math, English;
static int TotalScore;
static int TotalStudent;
public:
Score() {}
void setScore (int c, int m, int e) {
/*补充代码*/
}
int Sum() {
/*补充代码*/
}
void Show() {
/*补充代码*/
}
double static getAve() {
/*补充代码*/
}
};
int main() {
int n, op, i, c, m, e;
cin >> n;
int id = 1;
Score sco[11];
while(n--)
{
cin >> op;
if(op == 1) {
cin >> c >> m >> e;
/*补充代码*/ }
else if(op == 2) {
cin >> i;
/*补充代码*/ }
else if(op == 3) {
cin >> i;
/*补充代码*/ }
else {
/*补充代码*/ }
}
return 0;
}
输入格式:
包含一组测试数据。第一行输入一个整数n(1<=n<=100)。
接下来n行。每行先输入一个整数op:
当op==1时,输入x, y, z。代表输入一位新同学i(i从1开始编号)的语文、数学、英语成绩,无需输出。
当op==2时,输入i,输出第i同学的总成绩。数据保证这位同学的成绩已经录入。
当op==3时,输入i,依次输出第i同学的语文数学英语成绩,成绩之间用空格隔开。
当op==4时,输出当前已经录入学生的总平均分,结果保留两位小数。
(1<=n<=100, 1<=id<=10, 1<=op<=3, 0<=x,y,z<=100,全部输入都为整型数)
输出格式:
当op==2,3,4时,输出所求答案,每个答案占一行。
输入样例:
【样例输入】 【对应样例输出】
10
1 90 85 90
1 80 90 75
2 1
265
3 2
80 90 75
4
255.00
1 80 80 85
1 50 60 65
1 30 90 75
3 5
30 90 75
4
225.00
下面是对上述题目的实现:
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <iomanip>
using namespace std;
class Score {
private:
int Chinese, Math, English;
static int TotalScore;//设置静态数据成员学生总成绩
static int TotalStudent;//设置静态数据成员学生总人数
public:
Score() {}
void setScore(int c, int m, int e) {
Chinese = c;
Math = m;
English = e;
TotalStudent++;/*意义:每产生一个类的对象时,
TotalStudent就加1*/
TotalScore = TotalScore + Chinese + Math + English;/*意义:记录所有产生的对象的数据总和*/
}
int Sum() {
int sum;
sum = Chinese + Math + English;
cout << sum << endl;
return 1;
}
void Show() {
cout << Chinese << " " << Math << " " << English << endl;
}
double static getAve() {
cout << TotalScore << endl;/*这个就是我对TotalScore的测试,
与题目要求无关*/
return double(TotalScore) / double(TotalStudent);/*不转化为double的话,
结果后的小数会丢失,因为整形除整形为整形*/
}
};
int Score::TotalScore = 0;/*对于静态数据成员,
其只能在类体外进行初始化*/
int Score::TotalStudent = 0;
int main() {
int n, op, i, c, m, e;
cin >> n;
int id = 1;
Score sco[11];
while (n--)
{
cin >> op;
if (op == 1) {
cin >> c >> m >> e;
sco[id].setScore(c, m, e); id++;
}
else if (op == 2) {
cin >> i;
sco[i].Sum();
}
else if (op == 3) {
cin >> i;
sco[i].Show();
}
else {
cout << setiosflags(ios::fixed) << setprecision(2) << Score::getAve() << endl;
}
}
return 0;
}