C++之娶工作三年学妹的练习题大作业

背景:

笔者做完后觉得题目还挺有意思的,适合理解C++

 题目要求:

作业(一)

1、一个班有n个座位,编号为:1~n。 每个座位坐一个同学。老师在讲课时为了公平,要提问所有的学生。选择学生的方法是:

1)按照座位号,从第一个开始,往后数,到m时提问该同学。标记该同学为“提问过的同学”,它不再被提问。

2)从上一次提问过的同学的座位的下一个座位开始数,重复步骤1)。 如果数到最后一个座位还没有到m,则返回到第一个同学继续数,直到m,提问该同学。

编程求班级最后一个被提问的同学的座位号。验证一下:1) n=40, m=5; 2)n=51, m=7。

作业(二)

学校里的教工(Faculty)具有的属性包括:姓名(Name),工号(EID),级别(Glade), 工资(Salary),这些外部不可访问。在外部可以执行操作: showFacultyDetai():显示:所有的属性信息。IncreaseGlade(int): 增加级别,increaseSalary(int): 增加工资。

教工(Faculty)分为:教师(Teacher)和行政(Official)两类。其中教师除了Faculty具有的属性外,还包括所属院系(School)和专业(Discipline)。教师的级别每增加一级,工资增加Quot1。行政除了Faculty具有的属性外,还包括处室(Department)和官职(Position)。行政的工资每增加一级,工资增加Quot2。

学校里存在一类双肩挑的大佬(Giant),他们即是教师又是行政人员,他们的工资随着它们的行政级别和教师职称的增加而增加。

编程实现:

HuangTaiyan是行政人员,他到交大后职务增加了一级,工资增加了3000元人民币。显示他增加工资后的信息。

ZhaoHong是教师,她从副教授变成教授,级别增加了一级,工资增加了300元人民币。显示她增加了职称后的信息。

WangJiaQiong是双肩挑的大佬,他回到交大后职称增加一级,职务增加一级,显示它增加工资后的信息。

作业(三)

一个人(Person)的社会价值主要看它的年收入(Salary),该值在外边是不可见的。随着社会的进步,一个人的工资每年增加1000元(Operator ++)。当他娶媳妇后,媳妇的年收入计入他的年收入(Operator+)。displaySalary()显示它的收入。

编程实现:

交大的男毕业生刚参加工作年薪8000元,工作五年后,娶了个工作了三年的学妹,显示他娶学妹两年后的他的年收入(包括他媳妇的)。

作业(四)

从键盘输入10,20,30,40四个数,存入“d:\source.txt”文件中。然后,读出这几个数字,并把它们变成101,202,303,404,存入”d:\destination.txt”中。

作业(五)

类Point中包含了私有属性x和y坐标,它存在一个外部可以调用的方法:calc(Point &p)来计算点P和this之间的距离,并在显示器上显示。

类Circle继承了Point, 并添加了新的外部不可访问的属性半径(radium)。 它中间也包含了外部可访问的方法:calc(Circle &c) 计算圆c和this面积之差,并在显示器上显示。

设计外部函数func(Point &p1, Point &p2),其功能为:p1.calc(p2).

编程实现:

实现两个点:p1(3,4), p2(4,5)

实现两个圆:c1 (p1, radium=4), c2(p2, radium=3)

计算func(p1,p2)和func(c1,c2)。

内容:

题目一效果:

题目二效果:

题目三效果:

题目四效果:

 题目五效果:

源码:

vx: zew1040994588

int main()
{
    //题目1
    topic_1_main();
    //题目2
    //topic_2_main();
    //题目3
    //topic_3_main();
    //题目4
    //topic_4_main();
    //题目5
    //topic_5_main();
}
vx: zew1040994588
    //根据职级-职级-来算工资
    //行政信息
    Official* official1 = new Official("教务处", "教务处主任", "HuangTaiyan", 1, 1000); //堆中分配
    official1->IncreaseGlade(1);//职务级别增加1级,工资增加3000元
    official1->showFacultyDetail();


    //教师信息
    Teacher* teacher1 = new Teacher("土木系","土木施工专业","ZhaoHong",1,1000); //堆中分配
    teacher1->IncreaseGlade(1);//职称增加1级,工资增加300元
    teacher1->showFacultyDetail();

    //大佬信息
    Giant* giant1 = new Giant("教务处", "教务处一号主任", "土木系", "土木施工专业", "WangJiaQiong", 1, 1000);
    giant1->Official::IncreaseGlade(1);//职务增加1级别,工资增加3000元
    //这里调用的问题,看起来互相有独立的空间来存储
    giant1->Teacher::IncreaseGlade(1);//职称增加1级,工资增加300元
    giant1->showFacultyDetail();

猜你喜欢

转载自blog.csdn.net/Elephantpretty/article/details/131396884