DHUのOJc++面向对象系列学习笔记+题解
文章平均质量分 69
简单概括,面向题目。
systemyff
不会修电脑。
展开
-
27、模板类练习:实现两个整数、浮点数和字符的比较
问题描述 :请定义一个类模板,利用它分别实现两个整数、浮点数和字符串的比较。在main函数中应用并测试之。输入说明 :每组输出分3行:第一行:标志行('i'代表输入两个整数进行比较;'f'代表输入两个浮点数进行比较;'s'代表输入两个字符串进行比较;'e'代表输入结束。)第二行和第三行分别对应进行比较的两个数据输入行之间无多余的空行,每行的开头和结尾无多余的空格输入可连续进行。输出说明 :每组输入数据对应一行输出数据,为2个比较数据之中的较大者。组与...原创 2021-02-14 13:32:00 · 1544 阅读 · 0 评论 -
26、企业经营税
问题描述 :有两类企业:服务性企业及制造业企业。服务性企业按营业收入的5%征税,制造业企业按营业收入的17%征税。现需编写程序,输入多个企业的类别及营业收入,计算并输出税收总额。本题使用多态的特性完成,需要定义三个类:Company类:基类Service类:服务性企业类,由Company类派生Manufacturer类:制造业企业类,由Company类派生请完成以上三个类的代码,使得程序能按范例输入、输出。输入说明 :可输入多组数据,每组占一行。每一行包含两部分.原创 2021-02-12 15:27:04 · 531 阅读 · 0 评论 -
25、发工资
问题描述 :实验目的:多态的应用实验内容: 公司有三类雇员:老板、销售员、实习生。 老板每月固定5000元;销售员每月2000元底薪加提成,提成的计算方式为销售额的10%;实习生的工资按实习时间计算,每小时30元。 现输入若干雇员的信息,请输出一个月该发多少工资。 要求: 首先声明类employee,包含: 数据成员: string name; string role; double salary;以及 构造函数:employ...原创 2021-02-12 15:25:52 · 627 阅读 · 0 评论 -
24、面积和
问题描述 :实验目的:多态的应用实验内容:定义类Point,包括:两个私有数据成员:intx,inty,它们分别表示一个点的x和y座标。构造函数:Point(intx,inty),即传两个参数,构造一个点对象。注意,本题要求Point类不得定义缺省构造函数,也就是只定义以上所说的构造函数。虚成员函数:doublegetArea()//获取该图形的面积boolisIn(Pointp)//判断传入的点是否在该图形之内(不包括边界),如果在...原创 2021-02-12 15:24:39 · 738 阅读 · 0 评论 -
23、计算周长
问题描述 :已定义一个Shape抽象类、常量PI以及main函数。 请在Shape的基础上派生出矩形Rectangle和圆形Circle类,二者都有 GetPerim()函数计算并返回对象的周长。 请编写这两个类的代码,使得在main函数中正确输出两个对象的周长。提供的代码如下:#include <iostream>using namespace std;const double PI=3.14;class Shape{public: Shape() {}...原创 2021-02-12 15:23:15 · 715 阅读 · 0 评论 -
22、从Point继承的Rectangle
问题描述 :实验目的:学习继承的编程方法实验内容:定义一个Point类,包括:两个私有数据成员:intx,inty,它们分别表示一个点的x和y座标。构造函数:Point(intx,inty),即传两个参数,构造一个点对象。注意,本题要求Point类不得定义缺省构造函数,也就是只定义以上所说的构造函数。成员函数:Move(intdx,intdy),将Point对象移动dx,dy的距离。定义一个Rectangle类,继承Point类,基类对象的x...原创 2021-02-12 15:21:50 · 2843 阅读 · 0 评论 -
21、某年龄段内的学生
问题描述 :实验目的:组合对象、静态成员的使用。实验内容:设计一个Date类,包含:1、私有实例属性年月日。2、私有静态属性maxYear和minYear,3、公有静态方法设置maxYear和minYear的值,如:static void SetMaxYear(int maxY){ maxYear = maxY;}设计一个Student类,数据成员包含int类型的学号、string类型的姓名、Date类型的生日。设计一个StudentList类...原创 2021-02-12 15:20:25 · 777 阅读 · 0 评论 -
20、长方形(类的实现)
问题描述 :实验目的:学习组合对象的使用。实验内容:定义一个Point类,包括两个私有属性:intx,inty,它们分别表示一个点的x和y座标。再定义构造函数:Point(intx,inty),即传两个参数,构造一个点对象。注意,本题要求Point类不得定义缺省构造函数,也就是只定义以上所说的构造函数。定义一个Rectangle类,包括三个私有属性:PointtopLeft,intwidth,intheight,它们分别表示长方形左上角顶点的座标,以及...原创 2021-02-12 15:18:52 · 1352 阅读 · 0 评论 -
19、重载<<输出圆
问题描述 :定义一个圆类(Circle),其中:属性包括: 半径(radius)、周长(perim)和面积(area),方法包括: 构造函数(以半径为参数,默认值为0,周长和面积在构造函数中生成) 重载运算符<<:输出半径、周长和面积。输出的格式为: “radius:2;perim:12.56;area:12.56”请编写Circle类的代码并使用以下main函数测试:int main(){ double r; while(cin>>r)...原创 2021-02-12 15:17:25 · 988 阅读 · 0 评论 -
18、统计单词
问题描述 :实验目的:string、vector、类的综合应用。实验内容:从键盘输入一篇文章,统计其中单词出现的次数(不区分大小写),并输出出现次数排名第一的单词及其次数。注意:可能有多个单词并列第一,需要全部输出。输出时,如果有多个单词排名并列,则按其在文章中出现的先后顺序输出,先出现的先输出。说明:为简单起见,单词的含义是空白字符分隔开的连续字符串。比如“I love China!”这句话包含三个单词,第三个单词是“China!”(包括其中的感叹号),再如“Hi !”,这句话包含两个单词原创 2021-02-12 15:15:59 · 1414 阅读 · 0 评论 -
17、提醒队列
问题描述 :实验目的:学习拷贝构造函数、析构函数的使用以及重载等于号。实验内容:设计一个类Note(提醒),包含时间和事件内容,时间由年月日时分秒组成,事件内容用字符串表示。类的编码大致如下:class Note{int year, month, day, hour, minute, second;char *event; //本题要求event必须为一个字符串指针,不能为字符数组或string字符串//以下只说明了两个构造函数,可根据需要自己增加构造函数的重载..原创 2021-02-12 15:14:16 · 867 阅读 · 0 评论 -
16、统计字符串个数
问题描述 :实验目的:静态成员、构造函数、析构函数、等于号的使用。实验内容:实现一个自己的字符串类MyString,要求包含以下函数:构造函数:MyString(unsigned n,char c):将字符c重复n次得到字符串MyString(char *p):根据传入的字符数组得到字符串根据需要,还需要设计默认构造函数、拷贝构造函数等其它函数。其中,MyString类需要提供一个静态方法GetCount,功能为获取到本程序在运行的过程中某时刻有多少个MyString的对象。原创 2021-02-08 18:36:41 · 1515 阅读 · 2 评论 -
15、长方形?
问题描述 :实验目的:学习友元的使用。实验内容:定义一个Point类,包括两个私有成员:intx,inty,它们分别表示一个点的x和y座标。再定义构造函数:Point(intx,inty),即传两个参数,构造一个点对象。定义一个Rectangle类,包括4个私有成员:PointtopLeft,topRight,bottomLeft, bottomRight,它们分别表示长方形4个顶点的座标。注意:在计算机系统里,座标系如下定义:屏幕的左上角的座标是(0,0)...原创 2021-02-08 18:35:12 · 968 阅读 · 0 评论 -
14、身份证类(对象数组)
问题描述 :问题描述:判断某人是否为青年的标准是男性不超过35周岁或女性不超过40周岁。已知身份证号从第7位开始的连续8位表示持证人的出生年月日,身份证号的第17位为奇数表示持证人为男性,身份证号第17位数字为偶数表示持证人为女性。例如:身份证号为32110219830103191X的持证人出生年月为1983年1月3日,性别为男性。试定义一个类ID,根据身份证号判断持证人截止到2015年10月1日是否为青年。具体要求如下:(1) 私有数据成员:char *id; 保存18位身份证号i...原创 2021-02-08 18:32:43 · 1291 阅读 · 1 评论 -
13、计算学生总评成绩并排序(友元函数)
问题描述 :问题描述:试定义一个实现计算学生课程成绩的类Student,对学生学期总评成绩进行计算并排序。具体要求如下:(1)私有数据成员:int norm, ex, final,overall:分别表示学生的平时成绩、实验成绩、期末考试和总评成绩 char name[15]:学生姓名(2)公有成员函数: void init(char *name1, int nor1, int ex1, int fin1); 用参数name1,nor1,exp1,fin1分别初始化数据...原创 2021-02-08 18:30:28 · 3760 阅读 · 0 评论 -
12、学生成绩转换(友元函数)
问题描述 :描述:有一个学生类Student,包括学号、成绩(百分制)。要求设计一个友元函数Score_Trans,将百分制成绩转换成对应的等级输出到屏幕上:大于等于90:优;80~90:良;70~79:中;60~69:及格;小于60:不及格。Student类如下:Student类如下:class Student{ public: void Set_StuNum(int); //自行设计 int Get_StudNum(); //自行设计 ...原创 2021-02-08 18:28:43 · 2911 阅读 · 0 评论 -
11、对象数组和对象指针
问题描述 :要求:在给定的Student类的基础上建立一个对象数组,内放n个学生的数据(学号,分数)。请设计一个用户函数max,用指向对象的指针作为函数参数。max函数的功能是找出这n个学生中成绩最高者(假定无相同的成绩),并输出其学号。Student类如下:class Student{ public: void Set_StuNum(int); //自行设计 int Get_StudNum(); //自行设计 void Set_Sco...原创 2021-02-08 18:26:55 · 556 阅读 · 0 评论 -
10、类和对象:使用日期类计算相隔天数
问题描述 :现有日期类Date。Date类定义如下:class Date{ int year; int month; int day; public: Date(int y,int m,int d):year(y),month(m),day(d){}; int getYear() const {return year;} int getMonth() const {return month;} int ...原创 2021-02-08 18:24:53 · 1206 阅读 · 0 评论 -
9、长方形集合
问题描述 :定义一个Point类,包括两个私有属性:intx,inty,它们分别表示一个点的x和y座标。再定义构造函数:Point(intx,inty),即传两个参数,构造一个点对象。定义一个Rectangle类,包括四个私有属性:Int num, PointtopLeft,intwidth,intheight,它们分别表示长方形的编号(长方形的编号不重复)、左上角顶点的座标,以及横向的宽度和纵向的高度。注意:在计算机系统里,座标系如下定义:屏幕的左...原创 2021-02-07 11:03:02 · 1005 阅读 · 0 评论 -
8、查找学生
问题描述 :实验目的:学习string类型的使用;学习对象数组的使用。实验内容:设计一个student类,包含学生学号、姓名、语文成绩、数学成绩。现有n个学生,保存在一个数组中,请对每个学生,分别计算语数两门课的平均成绩。此外,再设计一个函数findStudent,根据传入的学生数组和需要查找的姓名searchName,查找姓名中包含searchName的学生。比如输入”huang”,则输出所有姓名中包含”huang”的学生的成绩。分析:类中的属性可包括(但不仅限于):...原创 2021-02-07 11:01:22 · 1894 阅读 · 0 评论 -
7、寻找最好成绩
问题描述 :建立一个对象数组,内放若干个学生的学习数据(学号,成绩)。设计一函数max,使用学生对象数组作为参数,在max函数里找出这些学生中成绩最高者,并输出其学号及成绩。在main函数中使用并测试之。在main函数中读入学生数据,创建学生对象数组,并调用max函数输出成绩最高者。如果有多名学生成绩最高,则按照输入的先后顺序输出这些学生的信息。要求:(1)学生类的名称为Student,定义如下: Student{ private: ...原创 2021-02-07 10:57:01 · 1053 阅读 · 1 评论 -
6、学生数组排序
问题描述 :输入3个学生的姓名和英语、数学成绩,需要求每个学生的总成绩并对3个学生按总成绩降序输出,请编写一个类student,实现该功能。student类的数据成员包括(但不限于)name(姓名,类型为string)、math(数学)、english(英语)。要求用成员函数实现以下功能:1、使用构造函数给各属性赋初值2、调用实例方法计算学生总成绩3、其它必要的功能另设计一个函数对学生按总成绩降序排列,并在main函数中输出学生信息。main函数的实现参考如下代码,请..原创 2021-02-07 10:55:35 · 1374 阅读 · 0 评论 -
5、盒子类
问题描述 :定义盒子Box类,计算盒子的体积及表面积。Box类包括:私有数据成员: int Length//Box的长度 int Width //Box的宽度 int Height //Box的高度公有成员函数: void InitBox( int x, int y, int z); //设置Box的尺寸 void setVolume( ); //计算Box的体积 void setArea( ); //计算...原创 2021-02-07 10:53:34 · 750 阅读 · 0 评论 -
4、函数模板:两点间的距离
问题描述 :使用模板函数,分别求出int型数的两点间的距离和浮点型数的两点间的距离。在main函数中测试运用模板函数。函数原型为:template <class T>T distance( T, T, T, T);main函数可参考以下代码编写:int main( ){ int i_x1, i_y1, i_x2, i_y2; double d_x1, d_y1, d_x2, d_y2; cin>>i_x1>>...原创 2021-02-07 10:52:04 · 633 阅读 · 0 评论 -
3、复制字符串
问题描述 :内容:对于字符串,实现以下复制功能数,并编写main函数测试这些函数:实验内容:使用默认形参或者重载实现cpy函数:原型可为:string cpy(string src, int startIndex, int endIndex)功能:从字符串src复制部分字符形成新字符串并返回。可指定复制的起始位置和结束位置,即从startIndex到endIndex之间的所有字符都复制到结果字符串中。startIndex默认为0, endIndex默认为到字符串尾部。比如,cp.原创 2021-02-07 10:50:12 · 2063 阅读 · 1 评论 -
2、删除字符(函数重载)
问题描述 :内容:对于字符串,实现以下删除字符的函数,并编写main函数测试这些函数:实验目的:学习函数重载的使用。1. remove函数:从形参传入一个字符,将该字符从字符串中删除。2.remove函数:从形参传入一个下标index,将index处的字符从字符串中删除。3.remove函数:从形参传入两个下标startIndex和endIndex,将从startIndex到endIndex范围内的字符从字符串中删除。main函数可参考以下代码编写:int main().原创 2021-02-07 10:48:07 · 1390 阅读 · 0 评论 -
1、字符串填充(默认形参)
问题描述 :实验目的:学习函数的默认形参的使用。内容:对于字符串,实现以下填充函数,并编写main函数测试这些函数:1. padLeft函数:功能:将一字符串左填充(在左边填充指定字符)至n个字符的长度,可指定填充字符,比如填充“*”,如果不指定填充字符,则填充空格。提示:为实现以上功能,函数原型可为: void padLeft(char string1[], char string2[], int n, char padding=' ')或: string p...原创 2021-02-07 10:43:57 · 2398 阅读 · 0 评论 -
(part_3):面向对象编程的几个难点(一)。
1、拷贝构造函数很多人都会说:“构造函数不就是在新建(构造)一个对象的时候调用一下吗……这有啥可讲的……class student {private: int a;public: int b; student(int num) { b = num; };};int main(){ student n(1); cout << n.b; return 0;}///样例,利用构造函数来进行给b赋初值。但是假如有一个student类n和n1,这个时候你就会发现一个原创 2021-01-11 17:17:09 · 461 阅读 · 0 评论 -
(part_2):面向对象编程的核心是什么?
其实我一直很厌烦互联网上大部分文章,他们写的过于的复杂。核心就是三个词:1、权限2、继承3、多态至于抽象、封装那都是编程的基本思维……一、权限决定了数据只能由谁来访问,这就避免了在编写程序时候对数据进行错误的操作。错误的操作数据是一种非常危险的bug,因为这无法通过编译器的报错来轻松发现。二、继承如果两个数据集只有少量的数据不同,我们可以通过继承来避免大量的重复代码。三、多态如果两个数据集的操作只有少量不同,可以通过多态来减少重复的代码。...原创 2020-12-26 19:18:07 · 1364 阅读 · 0 评论 -
(part_1):什么是面向对象编程
面向对象只是更优秀的面向过程!抽象、封装、继承、多态四个要素是面向对象的四要素(所以是c++是面向对象的编程与原)。而c语言只有抽象、部分封装和一点点多态所以只能称得上是面向过程。类是更合理的库!因为相比之下支持了完整的抽象、封装、继承、多态的功能,变得更加合理。class和struct有什么本质的区别?下面有两块代码:struct people { int a; people() { a = 10; } int out(void) { return a; }};in原创 2020-12-26 18:59:15 · 141 阅读 · 0 评论