From 379950bba2d499447c135623cb7e3bccc893bf4f Mon Sep 17 00:00:00 2001 From: gameloader Date: Sat, 29 Oct 2022 16:24:38 +0800 Subject: [PATCH] add some change --- content/posts/bj_homework.md | 44 +++++++++++++++++++++--------------- 1 file changed, 26 insertions(+), 18 deletions(-) diff --git a/content/posts/bj_homework.md b/content/posts/bj_homework.md index 784a691..c3b3763 100644 --- a/content/posts/bj_homework.md +++ b/content/posts/bj_homework.md @@ -463,7 +463,9 @@ int main() { ## 第四次作业 {#第四次作业} -### 设计并测试一个名为Rectangle的矩形类,其属性为矩形的左下角与右上角两个点的坐标,提供能计算矩形的面积的成员函数。 {#设计并测试一个名为rectangle的矩形类-其属性为矩形的左下角与右上角两个点的坐标-提供能计算矩形的面积的成员函数} +### 1 {#1} + +> 设计并测试一个名为Rectangle的矩形类,其属性为矩形的左下角与右上角两个点的坐标,提供能计算矩形的面积的成员函数。 设计一个结构体表示点坐标,设计矩形类的属性为两个坐标,成员函数为计算面积。并在main函数中简单测试,代码如下 @@ -511,7 +513,9 @@ int main(int argc, char *argv[]) { {{< figure src="https://gcore.jsdelivr.net/gh/game-loader/picbase@master/uPic/1026iUdZ0b.png" >}} -### 设计一个用于人事管理的“人员”类。由于考虑到通用性,这里只抽象出所有类型人员都具有的属性:编号、性别、出生日期、身份证号等。其中“出生日期”声明为一个“日期”类内嵌对象。用成员函数实现对人员信息的录入和显示。要求包括:构造函数和析构函数、拷贝构造函数、内联成员函数、带默认形参值的成员函数、类的组合。 {#设计一个用于人事管理的-人员-类-由于考虑到通用性-这里只抽象出所有类型人员都具有的属性-编号-性别-出生日期-身份证号等-其中-出生日期-声明为一个-日期-类内嵌对象-用成员函数实现对人员信息的录入和显示-要求包括-构造函数和析构函数-拷贝构造函数-内联成员函数-带默认形参值的成员函数-类的组合} +### 2 {#2} + +> 设计一个用于人事管理的“人员”类。由于考虑到通用性,这里只抽象出所有类型人员都具有的属性:编号、性别、出生日期、身份证号等。其中“出生日期”声明为一个“日期”类内嵌对象。用成员函数实现对人员信息的录入和显示。要求包括:构造函数和析构函数、拷贝构造函数、内联成员函数、带默认形参值的成员函数、类的组合。 ```C++ #include @@ -572,7 +576,9 @@ inline void Person::display() { ``` -### 定义一个Cat类,拥有静态数据成员HowManyCats,记录Cat的对象个体数目;静态成员函数GetHowMany(),存取HowManyCats。非静态数据成员CatID记录当前对象的编号,成员函数GetCatID()存取CatID。设计程序测试这个类,生成若干个Cat对象,输出每个对象的数据成员值,体会静态成员和非静态成员的用法。 {#定义一个cat类-拥有静态数据成员howmanycats-记录cat的对象个体数目-静态成员函数gethowmany-存取howmanycats-非静态数据成员catid记录当前对象的编号-成员函数getcatid存取catid-设计程序测试这个类-生成若干个cat对象-输出每个对象的数据成员值-体会静态成员和非静态成员的用法} +### 3 {#3} + +> 定义一个Cat类,拥有静态数据成员HowManyCats,记录Cat的对象个体数目;静态成员函数GetHowMany(),存取HowManyCats。非静态数据成员CatID记录当前对象的编号,成员函数GetCatID()存取CatID。设计程序测试这个类,生成若干个Cat对象,输出每个对象的数据成员值,体会静态成员和非静态成员的用法。 ```C++ #include @@ -944,21 +950,23 @@ int main(int argc, char *argv[]) { > 1. 武士降生输出样例: 004 blue lion 5 born with strength 5,2 lion in red headquarter > 表示在4点整,编号为5的蓝魔lion武士降生,它降生时生命值为5,降生后蓝魔司令部里共有2个lion武士。(为简单起见,不考虑单词的复数形式)注意,每制造出一个新的武士,都要输出此时司令部里共有多少个该种武士。 > 2. 司令部停止制造武士输出样例: 010 red headquarter stops making warriors -> 表示在10点整,红方司令部停止制造武士输出事件时:首先按时间顺序输出;同一时间发生的事件,先输出红司令部的,再输出蓝司令部的。输入第一行是一个整数,代表测试数据组数。每组测试数据共两行。第一行:一个整数M。其含义为, 每个司令部一开始都有M个生命元( 1 <= M <= 10000)。第二行:五个整数,依次是 dragon 、ninja、iceman、lion、wolf 的初始生命值。它们都大于0小于等于10000。输出对每组测试数据,要求输出从0时0分开始,到双方司令部都停止制造武士为止的所有事件。对每组测试数据,首先输出"Case:n" n是测试数据的编号,从1开始 。接下来按恰当的顺序和格式输出所有事件。每个事件都以事件发生的时间开头,时间以小时为单位,有三位。样例输入 -> 1 -> 20 -> 3 4 5 6 7 -> 样例输出 -> Case:1 -> 000 red iceman 1 born with strength 5,1 iceman in red headquarter -> 000 blue lion 1 born with strength 6,1 lion in blue headquarter -> 001 red lion 2 born with strength 6,1 lion in red headquarter -> 001 blue dragon 2 born with strength 3,1 dragon in blue headquarter -> 002 red wolf 3 born with strength 7,1 wolf in red headquarter -> 002 blue ninja 3 born with strength 4,1 ninja in blue headquarter -> 003 red headquarter stops making warriors -> 003 blue iceman 4 born with strength 5,1 iceman in blue headquarter -> 004 blue headquarter stops making warriors +> 表示在10点整,红方司令部停止制造武士 +> +> 输出事件时:首先按时间顺序输出;同一时间发生的事件,先输出红司令部的,再输出蓝司令部的。输入第一行是一个整数,代表测试数据组数。每组测试数据共两行。第一行:一个整数M。其含义为, 每个司令部一开始都有M个生命元( 1 <= M <= 10000)。第二行:五个整数,依次是 dragon 、ninja、iceman、lion、wolf 的初始生命值。它们都大于0小于等于10000。输出对每组测试数据,要求输出从0时0分开始,到双方司令部都停止制造武士为止的所有事件。对每组测试数据,首先输出"Case:n" n是测试数据的编号,从1开始 。接下来按恰当的顺序和格式输出所有事件。每个事件都以事件发生的时间开头,时间以小时为单位,有三位。样例输入 +> 1 +> 20 +> 3 4 5 6 7 +> 样例输出 +> Case:1 +> 000 red iceman 1 born with strength 5,1 iceman in red headquarter +> 000 blue lion 1 born with strength 6,1 lion in blue headquarter +> 001 red lion 2 born with strength 6,1 lion in red headquarter +> 001 blue dragon 2 born with strength 3,1 dragon in blue headquarter +> 002 red wolf 3 born with strength 7,1 wolf in red headquarter +> 002 blue ninja 3 born with strength 4,1 ninja in blue headquarter +> 003 red headquarter stops making warriors +> 003 blue iceman 4 born with strength 5,1 iceman in blue headquarter +> 004 blue headquarter stops making warriors 这道题题面比较复杂。但是仔细分析后可知指挥部只有制造武士这一种行为,实际上比较简单。只需读取输入为每个武士赋予相应的属性即可。这里因为武士本身没有行为,可以使用结构体存储。司令部为一个类,其中包含了生命元数量,制造武士顺序,现在制造的武士的下标,司令部的颜色,武士的标号和所有武士的信息这几个成员变量。使用武士名作为key构造哈希表存储武士信息可以快速获得某种武士的数量。构造函数中初始化成员变量。成员函数为制作武士和判断两个函数。制造武士用于根据指定下标制造对应顺序的武士,判断则用于判断当前应制造的武士能否制造,不能则寻找下一个能制造的武士,如果已经不能制造则终止制造武士并将over置为true; 代码如下