zoukankan      html  css  js  c++  java
  • C++高级语言程序设计实验七-中国矿业大学

    第一题

    题目描述

    对本章示范题的用于管理商店商品的实现程序进行完善:完成Wardrobe立柜类的具体定义与使用,并添加“帽子仓库类”以及“立柜仓库类”的定义及使用,以使程序能够对商店的这三种商品(衬衣、帽子、立柜)进行简单的管理与应用。
    要对商品实现的操作有:商品的进库(增加某类商品及其库存量),商品的出库(减少某类商品及其库存量),以及某类商品总价格的计算。

    源代码

    #include<iostream>
    using namespace std;
    class Complex
    {
        private:
            double real;
            double imag;
        public:
            Complex()
            {
                real=0;
                imag=0;
            }
            Complex(double r, double i)
            {
                real=r;
                imag=i;
            }
            Complex AddCom(Complex c2);
            void OutCom();
    };
     
    Complex Complex::AddCom(Complex c2)
    {
        real += c2.real;
        imag += c2.imag;
        return * this;
    }
    void Complex::OutCom()
    {
        if (real == 0)
            cout << imag << "i";
        else if (imag == 0)
            cout << real;
        else
            cout << real << "+" << imag << "i";
    }
    int main()
    {
        int a, b, c, d;
        cin >> a >> b >> c >> d;
        Complex c1(a, b);
        Complex c2(c, d);
        c1.AddCom(c2);
        c1.OutCom();
    }
    

    运行结果

    第二题

    题目描述

    自定义一个简单日期类 DateType,它具有数据成员 y、m、d,用来表示当前日期的年、月、日。
    而后设计该类欲实现(完成)的功能,进而设计出相应的类成员函数。
    class DateType {
    //自定义的日期类 DateType
    int y,m,d;
    //数据成员,表示当前日期的年、月、日
    public:
    DateType(int y0=1, int m0=1, int d0=1);
    //构造函数,设定年、月、日;并设置参数默认值
    void IncrementDay();
    //增加 1 天
    bool Equal(DateType dt2);
    //判断二日期是否相等
    void PrintDate();
    //屏幕输出日期对象的有关数据(年、月、日)
    };
    1、完成有参构造函数
    2、完成 void IncrementDay()函数,计算天数加1后的日期。
    3、完成Equal(DateType dt2)函数,判断两个日期是否相等。
    4、完成打印输出函数PrintDate(),在屏幕上输出日期对象的有关数据(年、月、日)
    5、编写并完成主函数,实现输入包含六个整数,说明DateType类对象dt1,dt2,分别是dt1和dt2的年月日。请先输出dt1,dt2,然后判断dt1,dt2是否相等,再对dt1,dt2分别增加一天。最后输出dt1,dt2。
    注意:在IncrementDay成员函数中,当对日期增加1天后,要注意所谓的“进位”问题:首先算出本“日”所在的月份具有的天数N(注意闰年与平年的2月份天数不一样),若加1之后的“日”数值超过所在的月份具有的天数N时,“进位”到月,而月份若超过12时还要“进位”到年等。

    源代码

    #include<iostream>
    using namespace std;
     
    class DateType{
        protected:
            int y;
            int m;
            int d;
        public:
            DateType(int yy=0,int mm=0,int dd=0):y(yy),m(mm),d(dd){}
            void PrintDate()
            {
                cout << y << "-" << m << "-" << d;
            }
            void up()
            {
                int g[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
                if(y%4==0&&y%100!=0||y%400==0) g[2] = 29;
                d++;
                if(d>g[m])
                {
                    d-=g[m];
                    m++;
                    if(m>12)
                    {
                        m-=12;
                        y++;
                    }
                }
            }
    };
    class TimeType{
        protected:
            int h;
            int m;
            int s;
        public:
            TimeType(int hh=0,int mm=0,int ss=0):h(hh),m(mm),s(ss){}
            void PrintTime()
            {
                cout << h << ":" << m << ":" << s;
            }
            int up(int ss)
            {
                s+=ss;
                int temp = s/60;
                if(temp)
                {
                    m+=temp;
                    s-=60*temp;
                    temp=m/60;
                    if(temp)
                    {
                        h+=temp;
                        m-=60*temp;
                        temp=h/24;
                        if(temp)
                        {
                            h-=24*temp;
                            return temp;
                        }
                    }
                }
                return 0;
            }
    };
    class DateTimeType {  
        DateType date;
        TimeType time;
        public:
            DateTimeType(int y0=1, int m0=1, int d0=1, int hr0=0, int mi0=0, int se0=0):date(y0,m0,d0),time(hr0,mi0,se0){}
            DateType& GetDate(){ return date; } 
            TimeType& GetTime(){ return time; } 
            void IncrementSecond(int s)
            {
                //如果大于24小时 
     
                if(time.up(s))
                {
                    date.up();//日期增加一天 
                }
            }
            void PrintDateTime()
            {
                date.PrintDate();
                cout << " ";
                time.PrintTime();
                cout << endl;
            }
    };
     
    int main(){
        DateTimeType dttm1(1999,12,31,23,59,59), dttm2;
        (dttm1.GetDate()).PrintDate(); 
        cout<<endl;
        dttm1.PrintDateTime(); 
        dttm2.PrintDateTime();
        dttm1.IncrementSecond(30); 
        dttm1.PrintDateTime();
        return 0;
    }
    

    运行截图

    第三题

    题目描述

    设计一个学生类(CStudent),其私有数据成员:注册号、姓名、数学、外语、计算机课程的成绩。公有成员函数是:求三门课总成绩的函数 Sum;求三门课平均成绩的函数 Average;显示学生数据信息的函数 Display;设置学生数据信息的函数 SetData。
    1.可按如下样式设计 CStudent类的各数据成员以及成员函数
    class CStudent { //学生类 CStudent
    unsigned long reg_num; //数据成员:注册号
    char name[30]; //数据成员:姓名
    float math, eng, comp; //数据成员:数学、英语、计算机成绩
    public: //公有成员函数
    float Sum(); //求三门课总成绩的函数 Sum
    float Average(); //求三门课平均成绩的函数 Average
    Display(); //显示学生数据信息的函数 Display
    SetData (unsigned long r, char* n, float m, float e, float c) ;
    //设置学生数据信息的函数 SetData
    };
    在主函数,通过使用“CStudent stu[150];”的语句,来说明一个CStudent类对象的数组stu,而后通过各对象stu[i]来处理并求取每一学生的总成绩、平均成绩等。
    (1)输入本次欲处理的学生人数 TOTAL(小于等于 150 的正整数);
    (2)输入全班 TOTAL 个学生的有关信息,依次放入对象数组的各元素 stu[i]中(通过使用“stu[i].SetData(...);”形式的语句来实现);
    (3)对全班TOTAL个学生,依次通过对象stu[i]来求出其总成绩、平均成绩等(其中要使用形如“stu[i].Sum()”以及“stu[i].Average()”式样的对成员函数进行调用的语句),并同时求出全班学生总成绩最高者处于 stu 数组的下标位置idx_max,而后通过使用“stu[idx_max].Display();”来输出该学生有关的全部数据信息。

    源代码

    #include<iostream>
    #include<string>
    using namespace std;
     
    class Person{
        protected:
            string name;
            int age;
            string sex;
        public:
            Person(){}
            Person(string n,int a,string s):name(n),age(a),sex(s){}
            void Display()
            {
                cout << name << " " << age << " " << sex;
            }
    };
    class Student:public Person{
        protected:
            int regnum;
            string department;
        public:
            Student(){}
            Student(string n,int a,string s,int r,string d)
            {
                name=n;age=a;sex=s;regnum=r;department=d;
            }
            void Display()
            {
                Person::Display();
                cout << " " << regnum << " " << department;
            }
    };
    class GraduateStudent:public Student{
        protected:
            string advisor;
        public:
            GraduateStudent(){};
            GraduateStudent(string n,int a,string s,int r,string d,string ad):Student(n,a,s,r,d),advisor(ad){}
            void Display()
            {
                Student::Display();
                cout << " " << advisor;
            }
    };
    class Teacher:public Person{
        protected:
            string course;
            string post;
        public:
            Teacher(string n,int a,string s,string c,string p):Person(n,a,s),course(c),post(p){}
            void Display()
            {
                Person::Display();
                cout << " " << course << " " << post;
            }
    };
     
    int main()
    {
        cout << "== per1.Display() => name,age,sex" << endl;
        Person per1("sun",42,"M");
        per1.Display();cout << endl;
        cout << "== stu1.Display() => name,age,sex,Reg_Number,department" << endl;
        Student stu1("guo",22,"F",1001,"comp");
        stu1.Display();cout << endl;
        cout << "== teach1.Display() => name,age,sex,course,post" << endl;
        Teacher teach1("fang",38,"M","english","professor");
        teach1.Display();cout << endl;
        cout << "== gStu.Display() => name,age,sex,Reg_Number,department,advisor" << endl;
        GraduateStudent gStu("wu",25,"M",1021,"comp","wei");
        gStu.Display();
        return 0;
    }
    

    运行截图

  • 相关阅读:
    systemtap没找到函数变量
    systemtap get var of the tracepoing
    如何在tracepoint上注册函数
    stap中的entry函数
    stap用法
    在submit_bio处使用stapn
    巴达努斯
    perf事件的切换
    perf原理再看
    内存回收的阈值
  • 原文地址:https://www.cnblogs.com/hujunyao37201/p/14158983.html
Copyright © 2011-2022 走看看