1247: 设计一个学生类
题目描述
设计一个学生类(CStudent),它具有的私有数据成员是:注册号、姓名、数学、外语、 计算机课程的成绩。
具有的公有成员函数是:求三门课总成绩的函数 sum;求三门课平均成绩的函数 average;显示学生数据信息的函数display;设置学生数据信息的函数 setData。
然后通过主函数,从键盘对学生对象的数组(全班学生信息)进行输入,而后求出每一学生 的总成绩、平均成绩,并显示全班学生总成绩最高者那一同学的全部数据信息。
类函数定义方式如下:
class CStudent { //学生类 CStudent
unsigned long reg_num; //数据成员:注册号
char name; (或者string name)//数据成员:姓名
float math, eng, comp; //数据成员:数学、英语、计算机成绩
public: //公有成员函数
float sum(); //求三门课总成绩的函数 sum
float average(); //求三门课平均成绩的函数 average
void display(); //显示学生数据信息的函数 display
void setData(unsigned long r, char n, float m, float e, float c);
//设置学生数据信息的函数 setData
};
输入
第一行输入1个数n(1<=n<=150),接下来输入n行,每行包括一个成员的注册号,姓名,数学成绩,英语成绩,计算机成绩;
输出
输出共有n+1行,前n行按顺序输出每个成员的总分和平均分;最后一行调用display()函数输出平均分最高成员的注册号,姓名,数学成绩,英语成绩,计算机成绩(若存在最高平均分相同的情况则输出首次出现最高平均分的那个学生)
样例输入
3
100001 ma 78 86 90
100002 li 85 91 88
100003 hu 82 89 88
样例输出
254 84.6667
264 88
259 86.3333
100002 li 85 91 88
#include "bits/stdc++.h"
using namespace std;
class CStudent { //学生类 CStudent
unsigned long reg_num; //数据成员:注册号
string name;//数据成员:姓名
float math, eng, comp; //数据成员:数学、英语、计算机成绩
public: //公有成员函数
float sum(); //求三门课总成绩的函数 sum
float average(); //求三门课平均成绩的函数 average
void display(); //显示学生数据信息的函数 display
void setData(unsigned long r, string n, float m, float e, float c);
//设置学生数据信息的函数 setData
};
float CStudent::sum()
{
return math + eng + comp;
}
float CStudent::average() {
return this->sum() / 3;
}
void CStudent::display()
{
cout << reg_num << " " << name << " " << math << " " << eng << " " << comp;
}
void CStudent::setData(unsigned long r, string n, float m, float e, float c)
{
reg_num = r;
name = n;
math = m;
eng = e;
comp = c;
}
int main()
{
int n;
cin >> n;
CStudent* stu = new CStudent[n];
for (int i = 0; i < n; i++)
{
unsigned long reg_num; //数据成员:注册号
string name;//数据成员:姓名
float math, eng, comp;
cin>> reg_num>> name>> math>>eng>>comp;
stu[i].setData(reg_num, name, math, eng, comp);
}
for (int i = 0; i < n; i++)
{
cout << stu[i].sum() <<" "<< stu[i].average() << endl;
}
int x=0;
for (int i = 1; i < n; i++)
{
stu[i].average() > stu[x].average() ? x = i : x = x;
}
stu[x].display();
delete[]stu;
return 0;
}