鱼C论坛

 找回密码
 立即注册
查看: 509|回复: 7

[已解决]C++设计一个小程序

[复制链接]
发表于 2020-4-22 15:32:49 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
1.设计一个学生类,数据成员包括:学号、姓名、性别、成绩。使用友元函数实现计算总成绩、计算平均成绩、输出。
2.修改完善上述类,重载“>”“<”“==”运算符,使之能够实现学生的比较,规则为比较两学生的总成绩大小。尝试在重载函数形参中使用const。
最佳答案
2020-4-22 16:21:52
  1. #include <iostream>
  2. #include <string>
  3. using namespace std;

  4. class Student
  5. {
  6.     private:
  7.         string num;
  8.         string name;
  9.         char sex;
  10.         float english,math,history,physics;
  11.     public:
  12.         friend void calculate(Student &stu);
  13.         Student(string nu,string na,char se='M',float en=0,float ma=0,float hi=0,float ph=0)
  14.         {
  15.             num=nu;
  16.             name=na;
  17.             sex=se;
  18.             english=en;
  19.             math=ma;
  20.             history=hi;
  21.             physics=ph;
  22.         }

  23.         string getName()
  24.         {
  25.             return name;
  26.         }
  27.       // 重载 < 运算符
  28.         bool operator <( Student& stu)
  29.         {
  30.             float sum1=0,sum2=0;
  31.             sum1=english+math+physics+history;
  32.             sum2=stu.english+stu.math+stu.physics+stu.history;
  33.             if(sum1 < sum2)
  34.             {
  35.                 return true;
  36.             }
  37.             return false;
  38.         }   
  39.       // 重载 > 运算符
  40.         bool operator >( Student& stu)
  41.         {
  42.             float sum1=0,sum2=0;
  43.             sum1=english+math+physics+history;
  44.             sum2=stu.english+stu.math+stu.physics+stu.history;
  45.             if(sum1 > sum2)
  46.             {
  47.                 return true;
  48.             }
  49.             return false;
  50.         }   
  51.       // 重载 == 运算符
  52.         bool operator ==( Student& stu)
  53.         {
  54.             float sum1=0,sum2=0;
  55.             sum1=english+math+physics+history;
  56.             sum2=stu.english+stu.math+stu.physics+stu.history;
  57.             if(sum1 == sum2)
  58.             {
  59.                 return true;
  60.             }
  61.             return false;
  62.         }   
  63. };
  64. void calculate(Student& stu)
  65. {
  66.     float sum,ave;
  67.     sum=stu.english+stu.math+stu.physics+stu.history;
  68.     ave=sum/4;
  69.     cout<<stu.name<<"的总成绩:"<<sum<<",平均成绩:"<<ave<<endl;
  70. }
  71. // 程序的主函数
  72. int main( )
  73. {
  74.     Student stu1("001","Jone",'M',80,80,80,80);
  75.     Student stu2("002","Jane",'F',80,80,80,80);
  76.     Student stu3("003","Ann",'F',81,82,83,84);
  77.    
  78.     calculate(stu1);
  79.     calculate(stu2);
  80.     calculate(stu3);
  81.    
  82.     if (stu1==stu2)
  83.         cout<<stu1.getName()<<"与"<<stu2.getName()<<"总成绩一样。"<<endl;
  84.     if (stu3>stu2)
  85.         cout<<stu3.getName()<<"的总成绩高于"<<stu2.getName()<<"的总成绩。"<<endl;
  86.     if (stu1<stu3)
  87.         cout<<stu1.getName()<<"的总成绩低于"<<stu3.getName()<<"的总成绩。"<<endl;
  88.    
  89.     return 0;
  90. }
复制代码

  1. Jone的总成绩:320,平均成绩:80
  2. Jane的总成绩:320,平均成绩:80
  3. Ann的总成绩:330,平均成绩:82.5
  4. Jone与Jane总成绩一样。
  5. Ann的总成绩高于Jane的总成绩。
  6. Jone的总成绩低于Ann的总成绩。
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-4-22 15:38:11 From FishC Mobile | 显示全部楼层
。。。。。这么基础的课堂作业不自己完成真的好么?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-22 15:39:10 | 显示全部楼层
倒戈卸甲 发表于 2020-4-22 15:38
。。。。。这么基础的课堂作业不自己完成真的好么?

分享给大家,看大家有什么更优化的代码没
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-22 15:43:00 From FishC Mobile | 显示全部楼层
ttyule1 发表于 2020-4-22 15:39
分享给大家,看大家有什么更优化的代码没

我晚饭后写一个看看。优化是不大可能了,因为运算符重载的代码是固定的。代码的细节方面看看能不能写得讲究一点。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

好的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-22 15:49:29 | 显示全部楼层
ttyule1 发表于 2020-4-22 15:39
分享给大家,看大家有什么更优化的代码没

分享?
那你倒是先写一个分享一下啊~~
总感觉你这是在找人代写作业。。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-22 16:21:32 | 显示全部楼层
sunrise085 发表于 2020-4-22 15:49
分享?
那你倒是先写一个分享一下啊~~
总感觉你这是在找人代写作业。。。。

sorry,作业已经交了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-22 16:21:52 | 显示全部楼层    本楼为最佳答案   
  1. #include <iostream>
  2. #include <string>
  3. using namespace std;

  4. class Student
  5. {
  6.     private:
  7.         string num;
  8.         string name;
  9.         char sex;
  10.         float english,math,history,physics;
  11.     public:
  12.         friend void calculate(Student &stu);
  13.         Student(string nu,string na,char se='M',float en=0,float ma=0,float hi=0,float ph=0)
  14.         {
  15.             num=nu;
  16.             name=na;
  17.             sex=se;
  18.             english=en;
  19.             math=ma;
  20.             history=hi;
  21.             physics=ph;
  22.         }

  23.         string getName()
  24.         {
  25.             return name;
  26.         }
  27.       // 重载 < 运算符
  28.         bool operator <( Student& stu)
  29.         {
  30.             float sum1=0,sum2=0;
  31.             sum1=english+math+physics+history;
  32.             sum2=stu.english+stu.math+stu.physics+stu.history;
  33.             if(sum1 < sum2)
  34.             {
  35.                 return true;
  36.             }
  37.             return false;
  38.         }   
  39.       // 重载 > 运算符
  40.         bool operator >( Student& stu)
  41.         {
  42.             float sum1=0,sum2=0;
  43.             sum1=english+math+physics+history;
  44.             sum2=stu.english+stu.math+stu.physics+stu.history;
  45.             if(sum1 > sum2)
  46.             {
  47.                 return true;
  48.             }
  49.             return false;
  50.         }   
  51.       // 重载 == 运算符
  52.         bool operator ==( Student& stu)
  53.         {
  54.             float sum1=0,sum2=0;
  55.             sum1=english+math+physics+history;
  56.             sum2=stu.english+stu.math+stu.physics+stu.history;
  57.             if(sum1 == sum2)
  58.             {
  59.                 return true;
  60.             }
  61.             return false;
  62.         }   
  63. };
  64. void calculate(Student& stu)
  65. {
  66.     float sum,ave;
  67.     sum=stu.english+stu.math+stu.physics+stu.history;
  68.     ave=sum/4;
  69.     cout<<stu.name<<"的总成绩:"<<sum<<",平均成绩:"<<ave<<endl;
  70. }
  71. // 程序的主函数
  72. int main( )
  73. {
  74.     Student stu1("001","Jone",'M',80,80,80,80);
  75.     Student stu2("002","Jane",'F',80,80,80,80);
  76.     Student stu3("003","Ann",'F',81,82,83,84);
  77.    
  78.     calculate(stu1);
  79.     calculate(stu2);
  80.     calculate(stu3);
  81.    
  82.     if (stu1==stu2)
  83.         cout<<stu1.getName()<<"与"<<stu2.getName()<<"总成绩一样。"<<endl;
  84.     if (stu3>stu2)
  85.         cout<<stu3.getName()<<"的总成绩高于"<<stu2.getName()<<"的总成绩。"<<endl;
  86.     if (stu1<stu3)
  87.         cout<<stu1.getName()<<"的总成绩低于"<<stu3.getName()<<"的总成绩。"<<endl;
  88.    
  89.     return 0;
  90. }
复制代码

  1. Jone的总成绩:320,平均成绩:80
  2. Jane的总成绩:320,平均成绩:80
  3. Ann的总成绩:330,平均成绩:82.5
  4. Jone与Jane总成绩一样。
  5. Ann的总成绩高于Jane的总成绩。
  6. Jone的总成绩低于Ann的总成绩。
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-28 23:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表