• 实验8:Problem D: 选举班干部了!


    Home Web Board ProblemSet Standing Status Statistics
     
    Problem D: 选举班干部了!

    Problem D: 选举班干部了!

    Time Limit: 1 Sec  Memory Limit: 128 MB
    Submit: 531  Solved: 308
    [Submit][Status][Web Board]

    Description

    新学期伊始,某班要通过竞争上岗方式竞选班干部。包括班长、团支书等。现在需要你来设计2个类Student和StudentCadre来模拟这一过程。

    1.Student类是学生类,包括

    (1)属性:string name——姓名。bool sex——性别。int grade——年级。Student *next——指向下一个学生指针。

    (2)方法:

    • 构造函数Student(string _name, bool _sex, int _grade)——初始化一个对象。注意:其中的next初始化为NULL。
    • 析构函数。
    • void showInfo()——输出一个学生的信息。next除外。
    • Student* getNext()——获得next指针。
    • void setNext(Student*)——设置next指针指向对象。

    2. StudentCadre类是Student类的派生类,包括:

    (1)属性:string position——表示竞聘岗位。

    (2)方法:

    • StudentCadre(string _name, bool _sex, int _grade, string pos)——构造函数,初始化各种属性。
    • 析构函数。
    • void showInfo()——显示信息。

    构造函数和析构函数都有输出,具体见样例。

    Input

    输入有多行。

    第1行有4部分:姓名、性别(0或1)、年级(整数)和岗位。

    第2行是一个正整数N,表示有N个学生支持该人竞聘相应岗位。之后有N行,每行有3个部分,分别是一个学生的姓名、性别和年级。

    Output

    见样例。

    Sample Input

    Tom 0 2015 Monitor 3 Jack 1 2015 Mary 0 2015 Sherry 1 2015

    Sample Output

    A student named by Tom is created! A student cadre with position Monitor is created. A student named by Jack is created! A student named by Mary is created! A student named by Sherry is created! name = Tom, sex = 0, grade = 2015; position = Monitor. name = Jack, sex = 1, grade = 2015; name = Mary, sex = 0, grade = 2015; name = Sherry, sex = 1, grade = 2015; A student named by Tom is erased. A student named by Jack is erased. A student named by Mary is erased. A student named by Sherry is erased.

    HINT

    string类是C++提供的类,在头文件string中,可以用#include <string>来使用这个类。该类的对象可以直接利用赋值运算符(=)进行复制,也可以直接利用cout输出,或利用cin输入。

    Append Code

    [Submit][Status][Web Board]
    #include<iostream>
    #include<string>
    using namespace std;
    class Student{
    protected:
        string name;
        bool sex;
        int grade;
        Student *next;
    public:
        Student(string _name, bool _sex, int _grade):name(_name),sex(_sex),grade(_grade),next(NULL){cout<<"A student named by "<<name<<" is created!"<<endl;}
        ~Student(){cout<<"A student named by "<<name<<" is erased."<<endl;}
        void showInfo(){cout<<"name = "<<name<<", sex = "<<sex<<", grade = "<<grade<<";";}
        Student* getNext(){return next;}
        void setNext(Student* s){next=s;}
    };
    class StudentCadre:public Student{
    protected:
        string position;
    public:
        StudentCadre(string _name, bool _sex, int _grade, string pos):Student(_name,_sex,_grade),position(pos){cout<<"A student cadre with position "<<position<<" is created."<<endl;}
        ~StudentCadre(){cout<<"A student named by "<<name<<" is erased."<<endl;};
        void showInfo(){cout<<"name = "<<name<<", sex = "<<sex<<", grade = "<<grade<<"; position = "<<position<<".";}
    
    };
    int main()
    {
        int num;
        string name, position;
        bool sex;
        int grade;
        Student *header, *student, *curStudent;
    
        cin>>name>>sex>>grade>>position;
        header = new StudentCadre(name, sex, grade,position);
        curStudent = header;
        cin>>num;
        for (int i = 0; i < num; i++)
        {
            cin>>name>>sex>>grade;
            student = new Student(name, sex, grade);
            curStudent -> setNext(student);
            curStudent = curStudent -> getNext();
        }
        ((StudentCadre*)header) -> showInfo();
        cout<<endl;
        curStudent = header;
        while (curStudent -> getNext() != NULL)
        {
            curStudent = curStudent -> getNext();
            curStudent->showInfo();
            cout<<endl;
        }
    
        curStudent = header;
        while (curStudent != NULL)
        {
            student = curStudent;
            curStudent = curStudent -> getNext();
            delete student;
        }
        return 0;
    }
    向代码最深处出发~!
  • 相关阅读:
    HSF原理
    Spring IOC 容器源码分析
    Spring Bean注册和加载
    CAP和BASE理论
    Java内存模型
    Java线程模型
    IO复用、多进程和多线程三种并发编程模型
    无锁编程本质论
    An Introduction to Lock-Free Programming
    安装与配置ironic
  • 原文地址:https://www.cnblogs.com/auto1945837845/p/5425590.html
Copyright © 2020-2023  润新知