C++学习
每月一更
RaspberryfC.
这个作者很懒,什么都没留下…
展开
-
身份证设定(复合类+拷贝构造)
题目描述定义一个身份证类PID,包含私有属性:身份证类型、身份证号码、出生日期;另外包含方法:构造、拷贝构造打印等。身份证类型表示一代身份证或者二代身份证,分别用1和2表示身份证号码是一个字符串,长度为15或者18出生日期是一个类,包含私有属性年、月、日,以及构造函数等(根据需要添加其他方法)构造函数要注意是复合类,要考虑复合类成员的构造打印函数把身份证的所有属性都输出,输出格式看示例拷贝构造作用:如果身份证号码是15位的就升级为18位,包括把身份证类型改为2,然后把号码扩展,规则如下:原创 2020-07-13 15:31:44 · 743 阅读 · 0 评论 -
手机服务(构造+拷贝构造+堆)
题目描述设计一个类来实现手机的功能。它包含私有属性:号码类型、号码、号码状态、停机日期;包含方法:构造、拷贝构造、打印、停机。1、号码类型表示用户类别,只用单个字母,A表示机构,B表示企业、C表示个人2、号码是11位整数,用一个字符串表示3、号码状态用一个数字表示,1、2、3分别表示在用、未用、停用4、停机日期是一个日期对象指针,在初始化时该成员指向空,该日期类包含私有属性年月日,以及构造函数和打印函数等5、构造函数的作用就是接受外来参数,并设置各个属性值,并输出提示信息,看示例输出6、拷贝构原创 2020-07-13 14:52:45 · 1852 阅读 · 1 评论 -
软件备份(拷贝构造函数)
题目描述软件作为一种对象也可以用类来描述,软件的属性包括软件名称、类型(分别用O、T和B表示原版、试用版还是备份)、有效截至日期(用CDate类子对象表示)和存储介质(分别用D、H和U表示光盘、磁盘和U盘)等。软件拷贝可通过拷贝构造函数来实现,此时在拷贝构造函数中软件类型改成“B”, 存储介质改为"H",其它不变。试完成该类的拷贝构造、构造和打印(包括从2015年4月7日算起有效期还有多少天,是否过期)成员函数的实现。当输入软件有效截止日期是0年0月0日,表示无日期限制,为unlimited;当输入日期原创 2020-07-13 13:49:00 · 2812 阅读 · 2 评论 -
电话号码升位(拷贝构造函数)
题目描述定义一个电话号码类CTelNumber,包含1个字符指针数据成员,以及构造、析构、打印及拷贝构造函数。字符指针是用于动态创建一个字符数组,然后保存外来输入的电话号码构造函数的功能是为对象设置键盘输入的7位电话号码,拷贝构造函数的功能是用原来7位号码的对象升位为8位号码对象,也就是说拷贝构造的对象是源对象的升级.电话升位的规则是原2、3、4开头的电话号码前面加8,原5、6、7、8开头的前面加2。注意:电话号码只能全部是数字字符,且与上述情况不符的输入均为非法)输入测试数据的组数 t第一原创 2020-07-13 13:16:33 · 2069 阅读 · 1 评论 -
分数运算(类+构造)
题目描述用C++定义和实现一个分数类,并根据要求完成分数对象的运用分数类包含分子和分母两个属性,操作包括:各属性的get方法构造函数,初始化分子分母相加运算,该运算接收两个分数对象的分子和分母,然后进行分数相加,结果保存在自己的分子和分母中,运算规则为:假设当前分数为A0/B0,接收两个分数A1/B1和A2/B2,相加结果,A0=A1×B2 + A2×B1,B0=B1×B2相乘运算,该运算接收两个分数对象的分子和分母,然后进行分数相乘,运算规则为:假设当前分数为A0/B0,接收两原创 2020-07-08 14:26:34 · 841 阅读 · 0 评论 -
点圆运算(构造与析构)
题目描述设计一个点类Point,包含私有属性x坐标和y坐标,操作包括1、构造函数,要求满足两个条件:1.能够使用类Point去创建一个对象数组(缺省构造方法!);2.能够接收外来输入的x和y坐标做初始化,提示:构造函数重载2、析构函数,把x坐标和y坐标都清0,并输出信息“point clear”3、设置(setXY),接受外来输入,并设置x坐标和y坐标4、获取x坐标,直接返回x值5、获取y坐标,直接返回y值设计一个圆类Circle,包含私有属性:圆心坐标x和y、半径r;操作包括:1、构造函数原创 2020-07-08 14:18:45 · 1660 阅读 · 3 评论 -
Complex(类与对象+构造)
题目描述编写一个复数类,能实现加、减运算,能输出复数的信息。 要求至少包含以下方法:1、缺省(无参)构造函数,设置实部与虚部为1;2、有参构造函数,给实部与虚部赋值;3、加法运算,计算两个复数的和;4、减法运算,计算两个复数的差;5、输出方法,输出当前复数的值输入测试数据的组数t 第一组的两个复数的实部 虚部 实部 虚部 第二组的两个复数的实部 虚部 实部 虚部 …输出第一组两个复数的和 第一组两个复数的差样例输入42 1 2 12 1 2 -13 1 2 -63 3 2 2原创 2020-07-08 14:09:10 · 1153 阅读 · 0 评论 -
手机取款(类与对象数组)
题目描述采用面向对象思想实现手机取款的过程假设银行账户有卡号、绑定手机号、动态密码、余额等属性,包含获取各种属性、校验动态密码、取款操作。属性全是整数数据。使用对象数组来保存n个银行账户。用户通过手机取款的步骤如下:(一般在主函数实现)1、用户输入手机号,在n个银行账户中找到相应的银行账户。如果查找成功则往下执行,否则输出信息“手机号不存在”,不再往下执行;2、用户输入动态密码,然后校验动态密码的是否正确如果密码正确则往下执行,否则输出信息“密码错误”,不再往下执行;3、用户输入取款金额,原创 2020-07-08 13:35:34 · 690 阅读 · 0 评论 -
Equation(类与对象+构造)
题目描述建立一个类Equation,表达方程ax2+bx+c=0。类中至少包含以下方法:1、无参构造(abc默认值为1、1、0)与有参构造函数,用于初始化a、b、c的值;2、set方法,用于修改a、b、c的值3、getRoot方法,求出方程的根。一元二次方程的求根公式如下:一元二次方程的求解分三种情况,如下:输入输入测试数据的组数t第一组a、b、c第二组a、b、c输出输出方程的根,结果到小数点后2位在C++中,输出指定精度的参考代码如下:#include #include原创 2020-07-08 11:01:03 · 1801 阅读 · 0 评论 -
分数类(类与构造)
题目描述完成下列分数类的实现:class CFraction{private:int fz, fm;public:CFraction(int fz_val, int fm_val) ;CFraction add(const CFraction &r);CFraction sub(const CFraction &r);CFraction mul(const CFraction &r);CFraction div(const CFraction &r);原创 2020-07-08 09:00:41 · 4686 阅读 · 3 评论 -
Date(类与构造)
题目描述下面是一个日期类的定义,请在类外实现其所有的方法,并在主函数中生成对象测试之。注意,在判断明天日期时,要加入跨月、跨年、闰年的判断例如9.月30日的明天是10月1日,12月31日的明天是第二年的1月1日2月28日的明天要区分是否闰年,闰年则是2月29日,非闰年则是3月1日输入测试数据的组数t第一组测试数据的年 月 日…要求第一个日期的年月日初始化采用构造函数,第二个日期的年月日初始化采用setDate方法,第三个日期又采用构造函数,第四个日期又采用setDate方法,以此类推。原创 2020-07-07 21:41:37 · 1783 阅读 · 2 评论 -
Point(类与构造)
题目描述下面是一个平面上的点的类定义,请在类外实现它的所有方法,并生成点测试它。输入测试数据的组数 t第一组测试数据点p1的x坐标 第一组测试数据点p1的y坐标 第一组测试数据点p2的x坐标 第一组测试数据点p2的y坐标…输出输出p1到p2的距离在C++中,输出指定精度的参考代码如下:#include #include //必须包含这个头文件using namespace std;void main( ){ double a =3.141596;cout<&l原创 2020-07-07 21:02:05 · 5741 阅读 · 1 评论 -
点和圆(类与对象)
题目描述设计一个点类Point,包含属性:x坐标和y坐标,方法:设定坐标(SetPoint),获取x坐标(GetX),获取y坐标(GetY)设计一个圆类Circle,包含属性:圆心坐标x和y、半径r;方法包括:设定圆心(SetCenter),设置圆心x坐标和y坐标设定半径(SetRadius),设置半径长度计算面积(getArea),计算公式:面积=3.14rr计算周长(getLength),计算公式:周长=23.14r包含(Contain),判断一个圆是否包含一个点,计算原创 2020-07-07 20:12:18 · 2717 阅读 · 0 评论 -
教师与学生(类和对象)
题目描述校园里的主体是学生,学生包含很多属性,比如姓名、学号、所在学院、专业、性别、住址、联系电话。。。。。。等等,有这些属性,需要操纵它们的动作,比如读取姓名、设置姓名、读取学号、设置学号。。。。。。等等,根据以上的信息,请给出一个完整的学生类定义校园里还包含各不同院系的老师,请思考教师这个类Teacher该包含哪些属性和方法(与学生相比,教师属性就要添加职称、职务、学历等信息,但不需要学号、专业等信息)给出一个完整的教师类定义:教师的日常工作包括布置作业(homework)、批改作业(review原创 2020-07-07 20:07:35 · 1678 阅读 · 0 评论 -
抄袭查找(结构体+指针+函数)
题目描述已知一群学生的考试试卷,要求对试卷内容进行对比,查找是否有抄袭。每张试卷包含:学号(整数类型)、题目1答案(字符串类型)、题目2答案(字符串类型)、题目3答案(字符串类型)要求:使用结构体来存储试卷的信息。定义一个函数,返回值为一个整数,参数是两个结构体指针,函数操作是比较两张试卷的每道题目的答案,如果相同题号的答案相似度超过90%,那么就认为有抄袭,函数返回抄袭题号,否则返回0。相似度是指在同一题目中,两个答案的逐个位置上的字符两两比较,相同的数量大于等于任一个答案的长度的90%,就认为抄袭原创 2020-07-07 19:37:56 · 1273 阅读 · 0 评论 -
谁是老二(结构体)
题目描述定义一个结构体,包含年月日,表示一个学生的出生日期。然后在一群学生的出生日期中找出谁的出生日期排行第二要求:出生日期的存储必须使用结构体,不能使用其他类型的数据结构。要求程序全过程对出生日期的输入、访问、输出都必须使用结构。输入第一行输入t表示有t个出生日期每行输入三个整数,分别表示年、月、日依次输入t个实例输出输出排行第二老的出生日期,按照年-月-日的格式输出样例输入61980 5 61981 8 31980 3 191980 5 31983 9 121981 1原创 2020-07-07 19:19:31 · 2379 阅读 · 0 评论 -
三数论大小(引用)
题目描述输入三个整数,然后按照从大到小的顺序输出数值。要求:定义一个函数,无返回值,函数参数是三个整数参数的引用,例如int &a, int &b, int &c。在函数内通过引用方法来对三个参数进行排序。主函数调用这个函数进行排序。要求:不能直接对三个整数进行排序,必须通过函数而且是引用的方法。输入第一行输入t表示有t个测试实例第二行起,每行输入三个整数输入t行输出每行按照从大到小的顺序输出每个实例,三个整数之间用单个空格隔开样例输入32 4 688 99原创 2020-07-07 18:44:38 · 1594 阅读 · 1 评论 -
动态矩阵(指针与堆内存分配)
题目描述未知一个整数矩阵的大小,在程序运行时才会输入矩阵的行数m和列数n要求使用指针,结合new方法,动态创建一个二维数组,并求出该矩阵的最小值和最大值,可以使用数组下标法。不能先创建一个超大矩阵,然后只使用矩阵的一部分空间来进行数据访问、创建的矩阵大小必须和输入的行数m和列数n一样输入第一行输入t表示t个测试实例第二行输入两个数字m和n,表示第一个矩阵的行数和列数第三行起,连续输入m行,每行n个数字,表示输入第一个矩阵的数值依次输入t个实例输出每行输出一个实例的最小值和最大值样例输原创 2020-07-07 17:14:10 · 2386 阅读 · 0 评论 -
月份查询(指针数组)
题目描述已知每个月份的英文单词如下,要求创建一个指针数组,数组中的每个指针指向一个月份的英文字符串,要求根据输入的月份数字输出相应的英文单词1月 January2月 February3月 March4月 April5月 May6月 June7月 July8月 Aguest9月 September10月 October11月 November12月 December输入第一行输入t表示t个测试实例接着每行输入一个月份的数字依次输入t行输出每行输出相应的月份的字符串,若没有原创 2020-07-07 16:58:43 · 2077 阅读 · 0 评论 -
数字判断(指针为函数参数)
题目描述输入一个字符串,判断这个字符串是否一个完全整数值的字符串,例如输入"1234",那么表示整数1234,输入"12a3"就表示只是一个字符串,不是一个整数要求编写函数isNumber,参数是一个字符指针,返回值是整数类型如果字符串表示一个整数,则计算出这个整数并且返回如果字符串不是表示一个整数,则返回-1主函数必须调用isNumber来判断字符串,不能使用任何C++自带或第三方的类似函数输入输入t表示有t个测试实例每行输入一个字符串依次输入t行输出每行输出判断结果样例输入3原创 2020-07-07 15:54:44 · 951 阅读 · 1 评论 -
三数论大小(指针)
题目描述输入三个整数,然后按照从大到小的顺序输出数值。要求:用三个指针分别指向这三个整数,排序过程必须通过这三个指针来操作,不能直接访问这三个整数输出时,必须使用这三个指针,不能使用存储三个整数的变量输入第一行输入t表示有t个测试实例第二行起,每行输入三个整数输入t行输出每行按照从大到小的顺序输出每个实例在每行中,每个数据输出后都带有一个空格,即使该行最后一个数据输出后也要再输出一个空格样例输入32 4 688 99 77111 333 222样例输出6 4 299 88原创 2020-07-07 15:38:21 · 1670 阅读 · 1 评论 -
货币兑换(指针与常量)
题目描述设定以下汇率常量美元汇率为6.2619,表示1美元兑换6.2619元人民币欧元汇率为6.6744,表示1欧元兑换6.6744元人民币日元汇率为0.0516,表示1元日元兑换0.0516元人民币港币汇率为0.8065,表示1元港币币兑换0.8065元人民币定义一个常量指针,根据需求指针指向不同的汇率,然后计算出各种货币兑换为人民币的数量要求:不能直接使用汇率常量进行计算,必须使用常量指针,只能使用一个指针输入输入一个t表示有t个测试实例每行先输入一个字母,表示货币类型,然后再输入一原创 2020-07-07 15:34:11 · 1364 阅读 · 0 评论 -
字符串比较(指针与字符)
题目描述编写一个函数比较两个字符串,参数是两个字符指针(要求显式定义,例如char *S, char *T),比较字符串S和T的大小。如果S大于T,则返回1,如果S小于T则返回-1,如果S与T相等则返回0。比较规则:1.把两个字符串的相同位置上的字符进行比较,字符的大小比较以ASCII值为准2.在比较中,如果字符串S的字符大于字符串T的字符的数量超过小于的数量,则认为S大于T,如果等于则S等于T,如果小于则S小于T例如S为aaccdd,T为eebbbb,每个位置比较得到S前两个字母都小于T,但后4原创 2020-07-07 15:30:26 · 2890 阅读 · 0 评论 -
成绩查询(指针运算)
题目描述已知一组学生成绩,然后根据输入的序号查询成绩要求:使用一个整数数组存储学生成绩使用一个指针指向数组中间元素使用++和–运算符,求出数组中间元素的前一个成绩和后一个成绩输入一个序号,然后计算这个序号的元素和中间元素的距离,然后使用指针去访问例如有11个学生,指针指向中间的学生也就是第6个学生,若输入序号3,即查询第3个学生的成绩,第3和第6之间距离为3,那么指针应该怎么运算呢???整个程序除了输入时可以使用数组下标,其他部分尽量使用使用指针进行访问。输入第一原创 2020-07-07 15:17:30 · 3133 阅读 · 0 评论 -
密钥加密法(指针应用)
题目描述有一种方式是使用密钥进行加密的方法,就是对明文的每个字符使用密钥上对应的密码进行加密,最终得到密文例如明文是abcde,密钥是234,那么加密方法就是a对应密钥的2,也就是a偏移2位转化为c;明文b对应密钥的3,就是b偏移3位转化为e,同理c偏移4位转化为g。这时候密钥已经使用完,那么又重头开始使用。因此明文的d对应密钥的2,转化为f,明文的e对应密钥的3转化为h。所以明文abcde,密钥234,经过加密后得到密文是cegfh。如果字母偏移的位数超过26个字母范围,则循环偏移,例如字母z偏移2原创 2020-07-07 15:00:51 · 1849 阅读 · 6 评论 -
C++(day 14)表示数值的字符串
题目请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100"、“5e2”、"-123"、“3.1416"及”-1E-16"都表示数值,但"12e"、“1a3.14”、“1.2.3”、"±5"及"12e+5.4"都不是。分析通过题目总结数值的字符串遵循的模式:A[.[B]][e|EC]或者.B[e|EC],其中A为数值的整数部分,B紧跟着小数点为数值的小数部分,C紧跟着’e’或者’E’为数值的指数部分。上述A和C都是可能以’+‘或者’-'开头的0至9的数位串;B也是0至9的原创 2020-05-09 11:50:54 · 317 阅读 · 0 评论 -
C++(day 13)vector容器
知识点一、什么是vector容器二、基本函数实现三、示例1. 初始化示例2. 增加和获得容器中的元素3. 修改元素示例4. 删除向量示例5. 综合示例一、什么是vector容器array 实现的是静态数组(容量固定的数组),而 vector 实现的是一个动态数组,即可以进行元素的插入和删除,在此过程中,vector 会动态调整所占用的内存空间,整个过程无需人工干预。vector 容器以类模板...原创 2020-05-08 14:31:37 · 108 阅读 · 0 评论 -
C++(day 12)多继承的构造顺序
构造顺序:任何虚拟基类的构造函数按照它们被继承的顺序构造;任何非虚拟基类的构造函数按照它们被继承的顺序构造;任何成员对象的构造函数按照它们声明的顺序构造;类自己的构造函数。测试代码:#include<iostream>using namespace std;class OBJ1{public: OBJ1() { cout << "OBJ1\n";...原创 2020-05-05 23:30:22 · 276 阅读 · 0 评论 -
C++(day 11)多重继承
知识点多继承如何工作继承的模糊性虚拟继承多继承如何工作一个类代表两个类的合成。例如,两用沙发,既是沙发,也是床,两用沙发应允许同时继承沙发和床的特征。多继承代码示例#include<iostream>using namespace std;class Bed{public: Bed() :weight(0) {} void Sleep() { cout...原创 2020-05-04 23:56:37 · 391 阅读 · 0 评论 -
C++(day 10)构造对象应注意哪些顺序问题
目录前言1. 局部和静态对象,以声明的顺序构造2. 静态对象只被构造一次3. 所有全局对象在主函数mian之前被构造4. 全局对象构造时无特殊顺序5. 成员以其在类中声明的顺序构造前言1. 局部和静态对象,以声明的顺序构造局部和静态对象是指块作用域和文件作用域的对象。它们声明的顺序与它们在程序中出现的顺序是一致的。先回顾一下全局对象和局部对象的相关概念:局部对象是指只在局部使用,比如在...原创 2020-05-03 20:53:40 · 355 阅读 · 0 评论 -
C++(day 9)类与对象 总结
目录总结表格总结表格 概念 说明 格式 类和对象 类成员函数 类的成员函数是指那些把定义和原型写在类定义内部的函数,就像类定义中的其他变量一样。 定义在类的内部: (inline) 返回值 方法名 参数列表 定义在类的外部:返回值 类名::方法名 参数列表 类访问修饰符 类成员可以被定义为 public、privat...原创 2020-05-02 12:09:58 · 94 阅读 · 0 评论 -
C++(day 8)一张图教你看懂浅拷贝和深拷贝
知识点回顾默认拷贝构造函数一张图看懂浅拷贝和深拷贝实例浅拷贝深拷贝回顾默认拷贝构造函数默认拷贝构造函数的策略就是逐个逐个成员依次拷贝。示例代码:#include<iostream>using namespace std;class Person{public: Person(int id) { _id = id; } void display() { ...原创 2020-05-01 10:58:14 · 209 阅读 · 0 评论 -
C++(day 7)什么时候需要自己定义拷贝构造函数?
知识点拷贝构造函数的定义如果不自行写拷贝构造函数会怎样?默认拷贝构造函数浅拷贝和深拷贝拷贝构造函数的定义拷贝其实可以理解为复制,例如我们常见的整型数据之间的复制:int a = 5;int b = a; //用a的值拷贝给新创建的b上述代码中,a的值是由一个常数5赋值的,而b的值是由一个和它相同类型的a赋值的。类比我们的类对象,类对象的创建首先要调用构造函数来初始化,这个构造函数可...原创 2020-04-30 23:24:07 · 2264 阅读 · 1 评论 -
C++(day 6)深入探索对象模型——表格驱动对象模型
知识点表格驱动对象模型C++对象模型静态成员和非静态成员的存放虚函数的存放C++对象模型的优缺点表格驱动对象模型由来: 简单对象模型中对象所占大小和成员数members有关,不同类的成员数不一致,导致所有类的所有对象的大小不一致,为了使类的所有对象都有一致的表达方式,就需要表达驱动模型。表格驱动模型: 把所有与members有关的数据抽出来,放在一个data member table 和一个...原创 2020-04-29 12:21:32 · 281 阅读 · 0 评论 -
C++(day 5)为什么需要虚函数?
知识点1. 问题引入1.1 初步探索多态性1.1.2 方法重载1.2 对于这种程序,无法实现多态性了!?1.3 再次探索多态性1.3.1 编译时多态1.3.2 运行时多态2. C++如何实现多态性2.1 加个virtual试试?2.2 为什么加入virtual就实现了运行时多态?2.2.1 静态联编2.2.2 动态联编2.2.3 加入virtual后为什么实现了运行时动态?3. 虚函数3.1 有虚...原创 2020-04-28 16:56:39 · 537 阅读 · 2 评论 -
C++(day 4)深入探索对象模型——简单对象模型
C++(day 4)深入探索对象的内存分布 还没写原创 2020-04-27 23:43:27 · 145 阅读 · 0 评论 -
C++(day 3) 多态性 类型兼容性 静态联编 动态联编
知识点1. 多态性的定义1.1 编译时多态1.2 运行时多态2. 类型兼容性2.1 基类对象与派生类对象的关系2.2 基类对象指针与派生类对象指针的关系3. 静态联编与动态联编3.1 虚函数3.2 动态联编过程4. 纯虚函数和抽象类4.1 虚函数4.2 抽象类1. 多态性的定义定义: 在程序中同一符号或名字在不同情况下具有不同解释的现象称为多态性。1.1 编译时多态定义: 指在编译阶段即可...原创 2020-04-26 13:50:02 · 176 阅读 · 0 评论 -
C++(day 2) 继承-多重继承与虚基类
知识点1. 多重继承的定义2. 多重继承派生类的构造函数2.1 多重继承派生类的析构函数3. 二义性问题4. 重复继承5. 虚基类5.1 带有虚基类的派生类的构造函数1. 多重继承的定义如果在定义一个派生类时,该派生类继承了2个或2个以上基类的特征,那么这种继承关系就称为多重继承。多重继承的派生类定义的一般格式为:class <派生类名> : <继承方式1> <...原创 2020-04-25 12:02:30 · 328 阅读 · 0 评论 -
C++(day 1) 继承-基类与派生类
知识点基类和派生类的定义派生类和基类的访问关系派生类对象对成员函数的调用派生类对象的存储派生类的构造派生类的构造函数派生类构造函数的调用顺序派生类的析构函数基类和派生类的定义 从一个类派生出另一个类,原先的类称为基类,继承类称为派生类。派生类的定义方式:class 派生类类名: 访问权限修饰符 基类类名1, 访问权限修饰符 基类类名2, ...{ //成员列表}例子:clas...原创 2020-04-24 23:42:26 · 398 阅读 · 0 评论