zoukankan      html  css  js  c++  java
  • C++题目东华

    1. 定义一个点类Point,其有两个double型的私有数据成员x和y。此外还包含以下公有成员函数:

    (1)构造函数,给点初始化;

    (2)setPoint函数,设置点坐标值;

    (3)distance函数,计算两点间的距离并返回,返回类型为double;

    除此之外,需要重载运算符>>,用于输入点坐标;重载运算符<<,用于输出点坐标。输入输出格式见下面运行示例。

    下面是该类的测试程序,请设计出类Point。

    int main( )

    {

        Point a, b(9, 9);

        cin>>a;

        cout<<a<<endl;

        cout<<b<<endl;

        a.setPoint(7, 7);

        cout<<"the distance of "<<a<<" and "<<b<<" is "<<a.distance(b)<<endl;

        return 0;

    }

    当输入5 6↙时,输出为:

    (5,6)

    (9,9)

    the distance of (7,7) and (9,9) is 2.82843

    2. 设计Person类,其有3个private数据成员,string类型的code和name,分别表示编号和姓名;char 类型的sex,表示性别;两个public成员函数,input函数用于输入数据给数据成员,output函数用于输出数据成员的值。

    在此基础上派生出Student类,其有1个private数据成员,int类型的score,表示分数;有1个public成员函数input用于输入数据给数据成员。除此需要重载<<运算符。

    请编写Person和Student类,并可使用提供的main函数测试。

    int main( ) {

         Student s1, s2;

         s1.input();

         s2.input();

         cout<<s1<<s2;

         return 0;

    }

    下面是某次运行的情况,其中带下划线的为输入,其它为输出。

    请输入编号 姓名 性别:101 zhang f

    请输入成绩:90

    请输入编号 姓名 性别:103 yuan m

    请输入成绩:89

    101 zhang f 90

    103 yuan m 89

    3.已知基类Building有3个int类型protected数据成员level、room、area;通过public继承获得2个派生类,派生类Housing有2个int类型private数据成员livingroom、bathroom;派生类Office有2个int类型private数据成员telephone、extinguisher。请设计这3个类,并编写合适的成员函数,要求使用以下main函数测试时,输出结果如下图:

    wps9int main( ) {

         Building *f;

         Housing hos(5,3,140,2,2);

         Office ofc(2,12,500,12,2);

         f=&hos;

         f->show();

         f=&ofc;

         f->show();

         return 0;

    }

    答案:

    #include<iostream>
    #include<cmath>
    using namespace std;
    
    class Building
    {
     protected:
       int level,room,area;
      public:
       virtual  void *show(){
        
     }
    };
    
    class Housing:public Building{
        private:
          int livingroom,bathroom;
        public:
            Housing(const int &level_, const int & room_, int area_, int livingroom_,int bathroom_){
                level=level_;
                room=room_;
                area=area_;
                livingroom=livingroom_;
                bathroom=bathroom_;
            }
        void *show(){
            cout<<"住宅楼:"<<endl;
            cout<<"楼 层:"<<level<<endl;
            cout<<"房间数:"<<room<<endl;
            cout<<"总面积:"<<area<<endl;
            cout<<"厅 数:"<<livingroom<<endl;
            cout<<"浴室数:"<<bathroom<<endl<<endl;
         }
        
    };
    class Office:public Building{
        private:
        int telephone,extinguisher;
        public:
        Office(const int &level_, const int & room_, int area_, int telephone_,int extinguisher_){
                level=level_;
                room=room_;
                area=area_;
                telephone=telephone_;
                extinguisher=extinguisher_;
            }
        void *show(){
            cout<<"办公楼:"<<endl;
            cout<<"楼 层:"<<level<<endl;
            cout<<"房间数:"<<room<<endl;
            cout<<"总面积:"<<area<<endl;
            cout<<"电话数:"<<telephone<<endl;
            cout<<"灭火器数:"<<extinguisher<<endl;
         }
    };
    int main( ) {
         Building *f;
         Housing hos(5,3,140,2,2);
         Office ofc(2,12,500,12,2);
         f=&hos;
         f->show();
         f=&ofc;
         f->show();
         return 0;
    }


    #include<iostream>
    #include<cmath>
    using namespace std;
    
    class Person
    {
    public:
        void input(const string name_, const string  code_, char sex_){
            name=name_;
            code=code_;
            sex=sex_; 
            output();
        }
        void output(){
            cout<<code<<" "<<name<<" "<<sex<<" ";
        }
    private:
        string name;
        string code;
        char sex;
    };
    
    class Student:public Person{
        private:
        int score;
        public:
        friend ostream & operator<<( ostream & os,const Person & c);
        void input(){
            cout<<"请输入编号 姓名 性别:";
            string name1,code1;
            char sex1;
            cin>>code1;
            cin>>name1;
            cin>>sex1;
            cout<<"请输入成绩:";
            cin>>score;
            Person::input(name1, code1, sex1);
            cout<<score<<endl;;
        }
    };
    ostream & operator<<( ostream & os,const Person & c)
    {    
        return os;
    }
    #include<iostream>
    #include<cmath>
    using namespace std;
    
    class Point
    {
    public:
        Point(double x=0, double y=0){
            this->x= x;
            this->y = y;
        }
        void setPoint(double x, double y) 
        {
            this->x = x;
            this->y = y;
        }
        friend ostream & operator<<( ostream & os,const Point & c);
        friend istream & operator>>( istream & is,Point & c);
        double distance(const Point &c) 
        {
            int x1 =x- c.x;  
            int x2 =y- c.y;  
            return sqrt(x1*x1+x2*x2);  
        }
    private:
        double x;
        double y;
    };
     ostream & operator<<( ostream & os,const Point & c)
    {    
        os << "(" << c.x<<","<<c.y<< ")"; 
        return os;
    }
    istream & operator>>( istream & is,Point & c)
    {
        cin>>c.x>>c.y;
        return is;
    }
    int main( )
    {
        Point a, b(9, 9);
        cin>>a;
        cout<<a<<endl;
        cout<<b<<endl;
        a.setPoint(7,7);
        cout<<"the distance of "<<a<<" and "<<b<<" is "<<a.distance(b)<<endl;
        return 0;
    }
  • 相关阅读:
    UVa OJ 102 Ecological Bin Packing (生态学装箱问题)
    最小生成树 zoj1586 QS Network
    最小生成树&并查集 POJ 1861 Network
    最小生成树&并查集POJ 1287 Networking
    2012年亚洲长春区域赛:K Yukari's Birthday
    最小生成树 ZOJ 1203 Swordfish
    HDU 2639 Bone Collector II
    POJ2528 Mayor's posters(区间替换&&线段切割)
    POJ2777 Count Color(区间修改&&懒惰标记&&位运算)
    (转)有关如何入门ACM
  • 原文地址:https://www.cnblogs.com/dgwblog/p/14276463.html
Copyright © 2011-2022 走看看