C++设计一个小程序
1.设计一个学生类,数据成员包括:学号、姓名、性别、成绩。使用友元函数实现计算总成绩、计算平均成绩、输出。2.修改完善上述类,重载“>”“<”“==”运算符,使之能够实现学生的比较,规则为比较两学生的总成绩大小。尝试在重载函数形参中使用const。 。。。。。这么基础的课堂作业不自己完成真的好么? 倒戈卸甲 发表于 2020-4-22 15:38
。。。。。这么基础的课堂作业不自己完成真的好么?
分享给大家,看大家有什么更优化的代码没 ttyule1 发表于 2020-4-22 15:39
分享给大家,看大家有什么更优化的代码没
我晚饭后写一个看看。优化是不大可能了,因为运算符重载的代码是固定的。代码的细节方面看看能不能写得讲究一点。 倒戈卸甲 发表于 2020-4-22 15:43
我晚饭后写一个看看。优化是不大可能了,因为运算符重载的代码是固定的。代码的细节方面看看能不能写得讲 ...
好的 ttyule1 发表于 2020-4-22 15:39
分享给大家,看大家有什么更优化的代码没
分享?
那你倒是先写一个分享一下啊~~
总感觉你这是在找人代写作业。。。。 sunrise085 发表于 2020-4-22 15:49
分享?
那你倒是先写一个分享一下啊~~
总感觉你这是在找人代写作业。。。。
sorry,作业已经交了{:5_109:} #include <iostream>
#include <string>
using namespace std;
class Student
{
private:
string num;
string name;
char sex;
float english,math,history,physics;
public:
friend void calculate(Student &stu);
Student(string nu,string na,char se='M',float en=0,float ma=0,float hi=0,float ph=0)
{
num=nu;
name=na;
sex=se;
english=en;
math=ma;
history=hi;
physics=ph;
}
string getName()
{
return name;
}
// 重载 < 运算符
bool operator <( Student& stu)
{
float sum1=0,sum2=0;
sum1=english+math+physics+history;
sum2=stu.english+stu.math+stu.physics+stu.history;
if(sum1 < sum2)
{
return true;
}
return false;
}
// 重载 > 运算符
bool operator >( Student& stu)
{
float sum1=0,sum2=0;
sum1=english+math+physics+history;
sum2=stu.english+stu.math+stu.physics+stu.history;
if(sum1 > sum2)
{
return true;
}
return false;
}
// 重载 == 运算符
bool operator ==( Student& stu)
{
float sum1=0,sum2=0;
sum1=english+math+physics+history;
sum2=stu.english+stu.math+stu.physics+stu.history;
if(sum1 == sum2)
{
return true;
}
return false;
}
};
void calculate(Student& stu)
{
float sum,ave;
sum=stu.english+stu.math+stu.physics+stu.history;
ave=sum/4;
cout<<stu.name<<"的总成绩:"<<sum<<",平均成绩:"<<ave<<endl;
}
// 程序的主函数
int main( )
{
Student stu1("001","Jone",'M',80,80,80,80);
Student stu2("002","Jane",'F',80,80,80,80);
Student stu3("003","Ann",'F',81,82,83,84);
calculate(stu1);
calculate(stu2);
calculate(stu3);
if (stu1==stu2)
cout<<stu1.getName()<<"与"<<stu2.getName()<<"总成绩一样。"<<endl;
if (stu3>stu2)
cout<<stu3.getName()<<"的总成绩高于"<<stu2.getName()<<"的总成绩。"<<endl;
if (stu1<stu3)
cout<<stu1.getName()<<"的总成绩低于"<<stu3.getName()<<"的总成绩。"<<endl;
return 0;
}
Jone的总成绩:320,平均成绩:80
Jane的总成绩:320,平均成绩:80
Ann的总成绩:330,平均成绩:82.5
Jone与Jane总成绩一样。
Ann的总成绩高于Jane的总成绩。
Jone的总成绩低于Ann的总成绩。
页:
[1]