美文网首页
第九章 类(II)

第九章 类(II)

作者: Redcarp | 来源:发表于2019-11-10 15:04 被阅读0次

    1.学生成绩类2
    【问题描述】定义学生成绩类Score,其私有数据成员有学号、姓名、物理、数学、外语、平均成绩。补全Score类及主函数,使得程序能在一行中一次输出该生的学号、姓名、物理、数学、外语、平均成绩。
    【输入形式】
    输入学生的学号、姓名、物理、数学、外语。
    (学号为不超过10位的数字;姓名为长度不超过10位的英文;物理数学外语成绩为0-100的整数)
    【输出形式】
    输出学生的学号、姓名、物理、数学、外语以及平均成绩。
    【样例输入】

    081531 WangXiaoming 100 82 99
    

    【样例输出】

    081531 WangXiaoming 100 82 99 93.67
    

    【样例说明】平均成绩保留到小数后两位。
    【评分标准】

     #include <iostream> 
    #include <string> 
    #include <cstdio> 
    #include <iomanip> 
    using namespace std; 
    class Score 
    { 
    private: 
        string Id, Name; 
        int Phy, Math, Eng; 
        double Ave; 
    public: 
        Score(string id, string name, int phy, int math, int eng):Id(id),Name(name),Phy(phy),Math(math),Eng(eng)
        {}
        friend void Average(int Phy,int Math,int Eng) 
        { 
           Ave=0;
           Ave=(double)(Phy+Math+Eng)/3;
        } 
        void Print() 
        { 
           cout<<Id<<' '<<Name<<' '<<Phy<<' '<<Math<<' '<<Eng<<' ';
           cout<<fixed<<setprecision(2)<<Ave;
        } 
    }; 
    int main() 
    { 
        string id, name; 
        int phy, math, eng; 
        cin >> id >> name >> phy >> math >> eng; 
        Score sco(id,name,phy,math,eng); 
        void Score::Average(phy,math,eng);
        sco.Print();
    } 
    

    2.电视类
    【问题描述】补全设计一个TV类和一个Remote类。Remote类的成员函数是TV类的友元, 电视类有状态、频道和音量基本属性,默认初始频道为5,默认初始音量为20。状态有开和关(-1表示关机状态,其他为开机状态)。
    在主函数根据输入的op值进行不同操作。补全代码使程序满足如下要求。
    【输入形式】

    当op==1时,

    输入电视操作命令如下:

    OFF_ON(切换电视开关机状态)

    VOL_UP(电视音量+1)

    VOL_DOWN(电视音量-1)

    CHA_NEXT(电视频道+1)

    CHA_PRE(电视频道-1)

    CHA_TO x(0<=x<=100,将电视频道切到x)

    VOL_TO x(0<=x<=100,将电视音量切到x)

    其中CHA_TO与VOL_TO通过调用友元类实现。

    当op==2时,输出当前电视状态。

    当op==3时,结束程序。

    【输出形式】
    当op==2时,输出当前电视状态,具体格式见样例。

    【样例输入】                                      【对应样例输出】
    
    2                                                 The TV is OFF
    1 OFF_ON                                   
    2                                                 The TV is ON
                                                      The channel is 5
                                                      The volume is 20
    1 VOL_UP
    2                                                 The TV is ON
                                                      The channel is 5
                                                      The volume is 21
    1 CHA_TO 30
    2                                                 The TV is ON
                                                      The channel is 30
                                                      The volume is 21
    1 VOL_TO 30
    2                                                 The TV is ON
                                                      The channel is 30
                                                      The volume is 30
    3
    
     注意输入后会有相应的输出。但在测试用例中,输入数据放在一起,输出会集中体现。
    
    #include <iostream> 
    using namespace std;// 前向声明 
    class TV; 
    class Remote // Remote类声明(其中的几个函数为友元)
    { 
    public: 
        Remote() {}; 
        void volume_to(TV &tv, int x); 
        void channel_to(TV &tv, int x); 
    }; 
    class TV//TV 类声明
    { 
    private: 
        int state; 
        int channel; 
        int volume; 
    public: 
        // 声明友元函数 
        friend void Remote::volume_to(TV &tv, int x); 
        friend void Remote::channel_to(TV &tv, int x); 
        // 成员函数 
        TV() {}; 
        TV(int st) :channel(5),volume(20),state(st){}
        void onoff() 
        { 
            if(state==-1)
            {
                state=0;
            }
            else
            {
                state=-1;
            }
        } 
        void cha_next() 
        { 
            channel++;      
        } 
        void cha_pre() 
        { 
            channel--;
        } 
        void vol_up() 
        { 
            volume++;
        } 
        void vol_down() 
        { 
            volume--;
        } 
        void print() 
        { 
            if(state == -1) 
            { 
                cout<<"The TV is OFF"<<endl;
            } 
            else 
            { 
                cout<<"The TV is ON"<<endl;
                cout<<"The channel is "<<channel<<endl;
                cout<<"The volume is "<<volume<<endl;
            } 
        } 
    }; 
    // 友元函数定义 
    void Remote::volume_to(TV &tv, int x) 
    { 
        tv.volume = x; 
    } 
    void Remote::channel_to(TV &tv, int x) 
    { 
        tv.channel = x; 
    } 
    int main() 
    { 
        int x, op; 
        string s; 
        TV tv(-1); 
        Remote rem; 
        while(1) 
        { 
            cin >> op; 
            if(op == 1) 
            { 
                cin >> s; 
                if(s == "OFF_ON") tv.onoff(); 
                else if(s == "VOL_UP") tv.vol_up(); 
                else if(s == "VOL_DOWN") tv.vol_down(); 
                else if(s == "CHA_NEXT") tv.cha_next(); 
                else if(s == "CHA_PRE") tv.cha_pre(); 
                else if(s == "CHA_TO") 
                { 
                    cin >> x; 
                    rem.channel_to(tv, x); 
                } 
                else if(s == "VOL_TO") 
                { 
                    cin >> x; 
                    rem.volume_to(tv, x); 
                } 
            } 
            else if(op == 2)
            { 
                tv.print(); 
            } 
            else 
            { 
                break;
            } 
        } 
        return 0; 
    }
    

    相关文章

      网友评论

          本文标题:第九章 类(II)

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