miss_you5 2021-10-13 13:18 采纳率: 100%
浏览 35
已结题

c++有人会做吗?编程没学好

img


定义一个名为“person”的类它封装了以下属性和必要的方法:
1)height: int,单位:cm;
2)重量:浮子,单位:kg;
3)性别:char, 'M'/'F'
4)名称:字符
2. 定义main()函数来完成以下工作:
1)建立一个包含10个Person类实例的数组;
2)从键盘将数据输入到数组元素中
3)打印平均身高、体重、最高、最矮者、男性、女性、170厘米以上者。

  • 写回答

1条回答 默认 最新

  • CSDN专家-link 2021-10-13 13:23
    关注
    #include <iostream>
    #include <string>
    using namespace std;
    class Person
    {
          private:
              int Height,Weight;
              string Name;
              char Sex;
         public:
              Person() {}
              void setHeight(int h) {Height = h;}
              void setWeight(int w) {Weight= w;}
              void setName(string name) {Name= name;}
              void setSex(char sex) {Sex= sex;}
              int getHeight() {return Height;}
              int getWeight() {return Weight;}
              char getSex() {return Sex;}
              string getName() {return Name;}
    };
    int getAvgHeight(Person *p,int n)
    {
          int h= 0;
          for(int i=0;i<n;i++)
              h += p[i].getHeight();
          return h/n;
    }
    string getHighMax(Person *p ,int n)
    {
          int max= 0,maxIdx= 0;
          for(int i=0;i<n;i++)
          {
              if(i==0)
              {
                    max = p[i].getHeight();
                    maxIdx = 0;
              }
              else if(max < p[i].getHeight())
              {
                   max = p[i].getHeight();
                   maxIdx = i;
              }
           }
          return p[maxIdx].getName();
    }
    string getHighMin(Person *p ,int n)
    {
          int min= 0,minIdx= 0;
          for(int i=0;i<n;i++)
          {
              if(i==0)
              {
                    min= p[i].getHeight();
                    minIdx = 0;
              }
              else if(min > p[i].getHeight())
              {
                   min = p[i].getHeight();
                   minIdx = i;
              }
           }
          return p[minIdx].getName();
    }
    void getF(Person *p,int n)
    {
           for(int i=0;i<n;i++)
              if(p[i].getSex() == 'F')
                  cout<<p[i].getName()<<endl;
    }
    void getM(Person *p,int n)
    {
           for(int i=0;i<n;i++)
              if(p[i].getSex() == 'M')
                  cout<<p[i].getName()<<endl;
    }
    void getHightMore(Person *p,int n,int h,char sex)
    {
           for(int i=0;i<n;i++)
              if(p[i].getHeight() > h && p[i].getSex() == sex)
                  cout<<p[i].getName()<<endl;
    }
    int getAvgWeight(Person *p,int n)
    {
          int h= 0;
          for(int i=0;i<n;i++)
              h += p[i].getWeight();
          return h/n;
    }
    int main()
    {
          Person p[10];
          int h,w;
          string name;
          char sex;
          for(int i=0;i<10;i++)
          {
                cin>>h>>w>>name>>sex;
                p[i].setHeight(h);
                p[i].setWeight(w);
                p[i].setName(name);
                p[i].setSex(sex);
          }
          //
          cout<<"平均身高:"<<getAvgHeight(p,10)<<endl;
          cout<<"平均体重:"<<getAvgWeight(p,10)<<endl;
          cout<<"最高的人:"<<getHighMax(p,10)<<endl;
          cout<<"最矮的人:"<<getHighMin(p,10)<<endl;
          cout<<"女人有:"<<endl;
          getF(p,10);
          cout<<"男人有:"<<endl;
          getM(p,10);
          cout<<"超过170cm的男人有:"<<endl;
          getHightMore(p,10,170,'M');
          return 0;
    }
     
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 10月21日
  • 已采纳回答 10月13日
  • 修改了问题 10月13日
  • 创建了问题 10月13日

悬赏问题

  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目
  • ¥20 mysql架构,按照姓名分表
  • ¥15 MATLAB实现区间[a,b]上的Gauss-Legendre积分
  • ¥15 delphi webbrowser组件网页下拉菜单自动选择问题
  • ¥15 linux驱动,linux应用,多线程