nomore123432 2021-10-13 15:39 采纳率: 100%
浏览 154
已结题

用C++建立一个类: Person,

成员包括: Height: intWeight: intSex: char Name: string .建Person类型的数组,其中有十个元素。输出其平均身高、平均体重、最高的人和最矮的 人, 男人有哪些, 女人有哪些,高于170的男人都是谁?
定义main()函数以执行
1) 构建一个包含10个类Person实例的数组;
2) 从键盘向数组元素输入数据;
3) 打印出平均身高、体重、最高和最矮的人、男性名单、女性名单以及170厘米以上的人

  • 写回答

2条回答 默认 最新

  • CSDN专家-link 2021-10-13 15:42
    关注
    #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;
    }
     
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

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

悬赏问题

  • ¥15 用C语言输入方程怎么
  • ¥15 网站显示不安全连接问题
  • ¥15 github训练的模型参数无法下载
  • ¥15 51单片机显示器问题
  • ¥20 关于#qt#的问题:Qt代码的移植问题
  • ¥50 求图像处理的matlab方案
  • ¥50 winform中使用edge的Kiosk模式
  • ¥15 关于#python#的问题:功能监听网页
  • ¥15 怎么让wx群机器人发送音乐
  • ¥15 fesafe材料库问题