美文网首页
学堂在线C++练习

学堂在线C++练习

作者: 据分专家 | 来源:发表于2019-08-07 09:53 被阅读0次

    类的练习

    #pragma warning(disable:4996)
    #include <string.h>
    #include <cstdio>
    #include<cstdlib>
    #include<iostream>
    #include<string>
    #include<math.h>
    using namespace std;
    enum CPU_Rank { P1 = 1,P2,P3,P4,P5,P6,P7 };
    class CPU {
    private:
        CPU_Rank rank;
        int frequency;
        float voltage;
    public:
        CPU(CPU_Rank r,int f, float v){//构造函数
            rank = r;
            frequency = f;
            voltage = v;
            cout << "构造了一个CPU!" << endl;
        }
        ~CPU() {//析构函数
            cout << "析构了一个CPU!" << endl;
        }
        //接口
        CPU_Rank GetRank() const { return rank; }
        int GetFrequency() const { return frequency; }
        float GetVoltage() const { return voltage; }
    
        void SetRank(CPU_Rank r) {
            rank = r;
        }
        void  SetFrequency(int f) {
            frequency = f;
        }
        void SetVoltage(float v) {
            voltage = v;
        }
        void Run() { cout << "CPU开始运行" << endl; }
        void Stop() { cout << "CPU停止运行" << endl; }
    };
    enum RAM_Type{DDR2=2,DDR3,DDR4};
    class RAM {
    private:
        enum RAM_Type type;
        unsigned int frequency;
        unsigned int size;
    public:
        RAM(RAM_Type t, unsigned int f, unsigned int s) {
            type = t;
            frequency = f;
            size = s;
            cout << "构造了一个RAM" << endl;
        }
        ~RAM() {
            cout << "析构了一个RAM" << endl;
        }
        RAM_Type GetType() const { return type; }
        unsigned int GetFrequency() const { return frequency; }
        unsigned int GetSize() const { return size; }
    
        void SetType(RAM_Type t) {
            type = t;
        }
        void  SetFrequency( unsigned int f) {
            frequency = f;
        }
        void SetSize( unsigned int s) {
            size = s;
    
        }
        void Run() { cout << "RAM开始运行" << endl; }
        void Stop() { cout << "RAM停止运行" << endl; }
    
    };
    enum CDROM_Interface{SATA,USB};
    enum CDROM_Install_type{external,build_in};
    class CD_ROM {
    private:
        enum CDROM_Interface interface_type;
        unsigned int cache_size;
        CDROM_Install_type install_type;
    public:
        CD_ROM(CDROM_Interface i, unsigned int s, CDROM_Install_type it) {
            interface_type = i;
            cache_size = s;
            install_type = it;
            cout << "构造了一个CD_ROM!" << endl;
        }
        ~CD_ROM() {
            cout << "析构了一个CD_ROM" << endl;
        }
        CDROM_Interface GetInterfaceType() const  {
            return interface_type;
        }
        unsigned int GetSize() const {
            return cache_size;
        }
        CDROM_Install_type GetInstallType() const {
            return install_type;
        }
    
        void SetInterfaceType(CDROM_Interface i) {
            interface_type = i;
        }
        void SetSize( unsigned int s) { 
            cache_size = s;
        }
        void SetInstallType(CDROM_Install_type it) {
            install_type = it;
        }
        void Run() {
            cout << "CD_ROM开始运行!" << endl;
        }
        void Stop() {
            cout << "CD_ROM停止运行" << endl;
        }
    
    };
    class COMPUTER {
    private:
        CPU my_cpu;
        RAM my_ram;
        CD_ROM my_cdrom;
        unsigned int storage_size;
        unsigned int bandwidth;
    public:
        COMPUTER(CPU c, RAM r, CD_ROM cd, unsigned int s, unsigned int b);
    
        ~COMPUTER() {
            cout << "析构了一个COMPUTER!" <<endl;
        }
        void Run() {
            my_cpu.Run();
            my_ram.Run();
            my_cdrom.Run();
            cout << "COMPUTER开始运行!" << endl;
        }
        void Stop() {
            my_cpu.Stop();
            my_ram.Stop();
            my_cdrom.Stop();
            cout << "COMPUTER结束运行!" << endl;
        }
    };
    
    COMPUTER::COMPUTER(CPU c, RAM r, CD_ROM cd, unsigned int s, unsigned int b) :
        my_cpu(c), my_ram(r), my_cdrom(cd) {
        storage_size = s;
        bandwidth = b;
        cout << "构造了一个COMPUTER!" << endl;
    }
    int main()
    
    {
        CPU a(P6, 300, 2.8);
        a.Run();
        a.Stop();
        cout << "*********\n";
    
        RAM b(DDR3,1600,8);
        b.Run();
        b.Stop();
        cout << "*********\n";
    
        CD_ROM c(SATA,2, build_in);
        c.Run();
        c.Stop();
        cout << "*********\n";
    
        COMPUTER my_computer(a, b, c, 128, 10);
        cout << "**********\n";
    
        my_computer.Run();
        my_computer.Stop();
        cout << "***********\n";
        return 0;
    
    }
    

    用类求最大公约数

    using namespace std;
    class Integer {
    private:
        int _num;
    public:
        //构造函数
        Integer(int num) {
            _num = num;
        }
        //计算当前Integer 和 b之间的最大公约数
        int gcdm(int a, int b) {
            if (b == 0) {
                return a;
            }
            else {
                return gcdm(b, a % b);
            }
        }
        int gcd(Integer b) {
            int x = _num;
            int y = b._num;
            return gcdm(x, y);
        }
    };
    int main() {
        int a, b;
        cin >> a >> b;
        Integer A(a);
        Integer B(b);
        cout << A.gcd(B) << endl;
        return 0;
    }
    

    数字反转

    输入12345
    输出54321

    /* students please write your program here */
    
    #include <iostream>
    #include<math.h>
    #include<vector>
    using namespace std;
    
    class Integer {
    private:
        int _num;
        //getLength()函数获取_num长度
        int getLength() {
            double   x = 10;
            int   y = 0;
            while (_num % 10 != 0) {
                _num /= 10;
                ++y;
            }
            return y;
        }
    public:
        //Integer类构造函数
        Integer(int num) {
            _num = num;
        }
        //反转_num
        int inversed() {
            vector<int> nums;
            int num1 = _num;
            while (num1 > 0) {
                nums.push_back(num1 % 10);
                num1 /= 10;
            }
            int result=0;
            int m = 0;
            vector<int>::const_iterator iterator = nums.end()-1;
            //vector迭代器相关操作可以从前往后,不能从后往前,不然会越界
                 
    
            /*
            int n = getLength()-1;
            for (int j=n;j>=0;j--)
            {
                
                result = result + nums[j] * (pow(10, m++));
            }
            */
            while (!nums.empty()) {
                result = result + nums.back() * (pow(10, m++));
                nums.pop_back();//使用栈的相关操作可以免去计数的麻烦
            }
            return result;
        }
    };
    
    int main() {
        int n;
        cin >> n;
        Integer integer(n);
        cout << integer.inversed() << endl;
        return 0;
    }
    

    🐟额宝

    #include <iostream>
    using namespace std;
    
    class Yuebao
    {
        static double profitRate;
    public:
        static void setProfitRate(double rate);
        Yuebao(double x) {
            _x = x;
        }
        void deposit(double m);
        void addProfit();
        void withdraw(double n);
        double getBalance()  const {
            return  _x;
        }
        /* Your code here! */
    private:
        double _x = 0;//余额
    
    };
    
    void Yuebao::deposit(double m) {
        _x +=m;
    }
    void Yuebao::withdraw(double n) {
        _x  -= n;
    }
    void Yuebao::setProfitRate(double rate) {
        profitRate = rate;
    }
    void Yuebao::addProfit() {
        _x = _x * (1 + profitRate);
    }
    double Yuebao::profitRate = 0;
    
    int main()
    {
        int n;
        while (cin >> n)
        {
            double profitRate;
            cin >> profitRate;
            Yuebao::setProfitRate(profitRate);//设定鱼额宝的利率
            Yuebao y(0); //新建鱼额宝账户,余额初始化为0
            int operation;//接受输入判断是存还是取
            double amount;//接受输入存取金额
            for (int i = 0; i < n; ++i)
            {
                y.addProfit();//加入前一天余额产生的利息
                cin >> operation >> amount;
                if (operation == 0)
                    y.deposit(amount);//存入金额
                else
                    y.withdraw(amount);//取出金额
            }
            cout << y.getBalance() << endl;//输出最终账户余额
        }
        return 0;
    }
    
    

    相关文章

      网友评论

          本文标题:学堂在线C++练习

          本文链接:https://www.haomeiwen.com/subject/sivndctx.html