• C++第十一十二章作业(mooc)


    问题一

    题目内容:

    要求定义一个基类Person,它有3个私有数据成员:姓名name(char *类型)、性别 sex(char类型)、年龄age(int类型);一个构造函数用于对数据成员初始化;有一个成员函数show()用于输出数据成员的信息。

    创建Person类的公有派生类Employee,增加两个私有数据成员:基本工资 basicSalary(int类型)和请假天数leaveDays(int型);为它定义初始化成员信息的构造函数,和显示数据成员信息的成员函数show()。

    输入格式:

    共5个数据,分别代表姓名、性别、年龄、基本工资、请假天数。

    输出格式:

    如示例数据所示,共5行,分别代表姓名、年龄、性别、基本工资、请假天数

    输入样例:

    zhangsan m 30 4000 2

    输出样例:

    name:zhangsan

    age:30

    sex:m

    basicSalary:4000

    leavedays:2

    #include<iostream>
    #include<cstring>
    using namespace std;
    class person
    {
        char name[10];
        char sex; int age;
    public:
        person(char *n, char s, int a)
        {
            strcpy(name, n);
            sex = s; age = a;
        }
        void show()
        {
            cout << "name:" << name << endl << "age:" << age << endl << "sex:" << sex << endl;
        }
    };
    class employee :public person
    {
        int basicsalary, leavedays;
    public:
        employee(char* n, char s, int a, int bs, int ld) :person(n, s, a)
        {
            basicsalary = bs; leavedays = ld;
        }
        void show()
        {
            person::show();
            cout << "basicSalary:" << basicsalary << endl << "leavedays:" << leavedays;
        }
    };
    int main()
    {
        char name[10], sex; int age, basicsalary,leavedays;
        cin >> name >> sex >> age >> basicsalary >> leavedays;
        employee e1(name, sex, age, basicsalary, leavedays);
        e1.show();
        return 0;
    }

    vs不支持strcpy函数,学校编译器不支持strcpy_s函数,太难了啊

    问题二

    题目内容:

    小明经营着一个不大的水果店,只销售苹果、香蕉和桔子。为了促销,小明制定了如下定价策略:

    1. 苹果:按斤论价,每斤P元,买W斤,则需支付W*P元。

    2. 香蕉:半价,每斤P元,买W斤,则需支付W/2*P元。

    3.桔子:按斤论价,每斤P元,买W斤。如果W>10,则打半价,即需支付W*P/2元;否则如果W>5,则打八折,即需支付W*P*0.8元;其他情况不打折,即需支付W*P元。

    请用C++来计算某个顾客采购的水果的总价。该程序至少应有:

    1. Fruit类:是个抽象类,是Apple、Banana和Orange的父类。支持重载的加法运算。

    2. Apple、Banana和Orange类:分别对应于苹果、香蕉和桔子三种水果,每种水果执行不同的定价策略。

    输入格式:

    输入为多行,每行格式为:

    C W P

    其中C是水果类型(a、b、o分别代表苹果、香蕉和桔子),W和P分别是顾客购买的相应水果的重量和每斤水果的单价。输入完成后输入字符q结束输入。

    输出格式:

    输出顾客需支付的总金额。

    输入样例:

    a 1 1

    b 1 1

    o 1 1

    q

    输出样例:

    2.5

    #include<iostream>
    using namespace std;
    class fruit
    {
    public:
        char c; double weight, price;
        fruit(double w, double p)
        {
            weight = w; price = p;
        }
        virtual double sum() { return 0; }
        friend double operator +(fruit& a, double sum)
        {
            return a.sum() + sum;
        }
    };
    class apple :public fruit
    {
    public:
        apple(double w, double p) :fruit(w, p){}
        double sum()
        {
            return weight * price;
        }
    };
    class banana :public fruit
    {
    public:
        banana(double w,double p):fruit(w,p){}
        double sum()
        {
            return weight * price / 2;
        }
    };
    class orange :public fruit
    {
    public:
        orange(double w,double p):fruit(w,p){}
        double sum()
        {
            if (weight <= 5)
                return weight * price;
            else if (weight > 10)
                return weight * price / 2;
            else
                return weight * price * 0.8;
        }
    };
    int main()
    {
        char c; double w = 0, p = 0;
        double sum = 0;
        cin >> c;
        while (c != 'q')
        {
            cin >> w >> p;
            switch (c)
            {
            case 'a':
            {apple a2(w, p);
            sum += a2.sum();
            break; }
            case 'b':
            {banana b2(w, p);
            sum += b2.sum();
            break; }
            case 'o':
            {
                orange o2(w, p);
                sum += o2.sum();
                break;
            }
            }
            cin >> c;
        }
        cout << sum;
        return 0;
    }

    派生类不能访问基类的私有成员

    重载运算符一般用友元函数的方式来重载(这道题就没用到重载)

  • 相关阅读:
    2016/11/17 周四 <javascript的封装简单示例>
    JavaScript资源大全中文版(Awesome最新版转载自张果老师博客)
    <web Font的使用>
    博客园首页飘彩色雪花代码
    C#多线程
    SQL Server数据库优化措施:索引优化(转)
    HOWTO: InstallShield中如何实现MSI包的权限提升(转)
    C# 获取操作系统版本信息
    installshield msi程序安装问题
    bat和VBS
  • 原文地址:https://www.cnblogs.com/dk2154/p/14161114.html
Copyright © 2020-2023  润新知