类-1247

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;

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值