zoukankan      html  css  js  c++  java
  • 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;
    }

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

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

  • 相关阅读:
    VIJOS-P1340 拯救ice-cream(广搜+优先级队列)
    uva 11754 Code Feat
    uva11426 GCD Extreme(II)
    uvalive 4119 Always an Interger
    POJ 1442 Black Box 优先队列
    2014上海网络赛 HDU 5053 the Sum of Cube
    uvalive 4795 Paperweight
    uvalive 4589 Asteroids
    uvalive 4973 Ardenia
    DP——数字游戏
  • 原文地址:https://www.cnblogs.com/dk2154/p/14161114.html
Copyright © 2011-2022 走看看