ttyule1 发表于 2020-4-22 15:32:49

C++设计一个小程序

1.设计一个学生类,数据成员包括:学号、姓名、性别、成绩。使用友元函数实现计算总成绩、计算平均成绩、输出。
2.修改完善上述类,重载“>”“<”“==”运算符,使之能够实现学生的比较,规则为比较两学生的总成绩大小。尝试在重载函数形参中使用const。

倒戈卸甲 发表于 2020-4-22 15:38:11

。。。。。这么基础的课堂作业不自己完成真的好么?

ttyule1 发表于 2020-4-22 15:39:10

倒戈卸甲 发表于 2020-4-22 15:38
。。。。。这么基础的课堂作业不自己完成真的好么?

分享给大家,看大家有什么更优化的代码没

倒戈卸甲 发表于 2020-4-22 15:43:00

ttyule1 发表于 2020-4-22 15:39
分享给大家,看大家有什么更优化的代码没

我晚饭后写一个看看。优化是不大可能了,因为运算符重载的代码是固定的。代码的细节方面看看能不能写得讲究一点。

ttyule1 发表于 2020-4-22 15:43:43

倒戈卸甲 发表于 2020-4-22 15:43
我晚饭后写一个看看。优化是不大可能了,因为运算符重载的代码是固定的。代码的细节方面看看能不能写得讲 ...

好的

sunrise085 发表于 2020-4-22 15:49:29

ttyule1 发表于 2020-4-22 15:39
分享给大家,看大家有什么更优化的代码没

分享?
那你倒是先写一个分享一下啊~~
总感觉你这是在找人代写作业。。。。

ttyule1 发表于 2020-4-22 16:21:32

sunrise085 发表于 2020-4-22 15:49
分享?
那你倒是先写一个分享一下啊~~
总感觉你这是在找人代写作业。。。。

sorry,作业已经交了{:5_109:}

sunrise085 发表于 2020-4-22 16:21:52

#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]
查看完整版本: C++设计一个小程序