(1)在定义对象时指定学生姓名和分数。且姓名必须指定,分数可缺省,缺省值为0分。要求包含构造函数、复制构造函数、姓名用string类型来定义。
主函数中实例化6个学生对象的姓名和分数分别为:
Sun l00
Wu 90
Jiang 52
Zhou 0
He 76
Liu 88
(2) 编写一个私有成员函数getGrade(),判定学生成绩的等级(60分以下为E等,[60-70)分为D等,[70-80)为C等,[80-90)为B等,[90-100]分为A等)。
(3)编写一个常成员函数getInfo()输出结果,包含学生姓名、分数、等级。
(4)定义静态数据成员count,用于统计总的学生人数,并在主函数中输出。
(5)定义该类的友元函数compare(Grade &m,Grade &n),比较两个学生成绩的高低,输出成绩高的那个学生信息。
运行结果及代码如下,如有帮助,请帮忙采纳一下,谢谢。
代码:
#include <iostream>
#include <string>
using namespace std;
class Grade
{
public:
string name;
int score;
static int count;
public:
Grade(string n,int s=0){name = n;score = s;count++;}
Grade(Grade& s){name = s.name;score = s.score;}
void getInfo() const
{
cout << name << " " << score << " " << getGrade()<<endl;
}
friend bool compare(Grade &m,Grade &n){
if (m.name.compare(n.name) == 0 && m.score == n.score)
{
return true;
}
return false;
}
private:
char getGrade() const
{
if(score>=90) return 'A';
else if(score>=80 && score < 90) return 'B';
else if(score>=70 && score < 80) return 'C';
else if(score>=60 && score < 70) return 'D';
else return 'E';
}
};
int Grade::count = 0;
int main()
{
Grade a[6]={Grade("Sun",100),Grade("Wu",90),Grade("Jiang",52),Grade("Zhou",0),Grade("He",76),Grade("Liu",88)};
for (int i = 0;i<6;i++)
{
a[i].getInfo();
}
cout << "学生总人数:" << Grade::count;
return 0;
}