面向对象程序设计
快考试了,整理一下学校c++实验课的代码
mikrokosmos116
这个作者很懒,什么都没留下…
展开
-
A. 圆和圆柱体计算(继承)
再以CCircle做为直接基类,派生出一个圆柱体类CCylinder,增加数据成员h(高)和一个计算体积的成员函数。以CPoint为基类,派生出一个圆形类CCircle,增加数据成员r(半径)和一个计算圆面积的成员函数。生成圆和圆柱体对象,调用成员函数计算面积或体积并输出结果。定义一个CPoint点类,包含数据成员x,y(坐标点)。时间限制1s 内存限制128MB。输出圆柱体的圆心位置 半径 高。输入圆柱体圆心位置、半径、高。输入圆的圆心位置、半径。输出圆的圆心位置 半径。原创 2023-05-20 15:26:10 · 106 阅读 · 0 评论 -
D. 最胖的加菲(类与对象+数组)
用类来描述猫,名称和体重都是私有属性,要求加入属性的get方法。蔬菜沙拉轻四两 自来水瘦八两 巧克力胖三斤 芝士蛋糕肥六斤。根据猫的体重对数组做升序排序,并输出排序后每只猫的名称。第二行输入一只猫的名称和体重,名称的最大长度为30。创建一个动态的猫对象数组,存储各只猫的名称和体重。有一群猫猫,每只猫都有自己的名称和体重。时间限制1s 内存限制128MB。输出一行,输出排序后的猫的名称。第一行输入n表示有n只猫。芝士蛋糕肥六斤 3000。巧克力胖三斤 1500。蔬菜沙拉轻四两 200。原创 2023-05-16 11:43:12 · 100 阅读 · 0 评论 -
C. 点和圆 (类与对象)
设计一个点类Point,包含属性:x坐标和y坐标,方法:设定坐标(setPoint),获取x坐标(getX),获取y坐标(getY)5. 包含(contain),判断一个圆是否包含一个点,计算圆心到这个点的距离,然后和半径做比较,大于则不包含,小于等于则包含。//输出圆是否包含点,包含则输出yes,否则输出no。//输入圆对象和点对象的属性数值,并做初始化。第二行输出圆是否包含点,包含则输出yes,否则输出no。第一行输入圆的三个整数参数:圆心的x和y坐标,半径。时间限制1s 内存限制128MB。原创 2023-05-16 11:27:58 · 92 阅读 · 0 评论 -
B. 存折类定义(类与对象)
定义一个存折类CAccount,存折类具有帐号(account, long)、姓名(name,char[10])、余额(balance,float)等数据成员,可以实现存款(deposit,操作成功提示“saving ok!”)、取款(withdraw,操作成功提示“withdraw ok!”)和查询余额(check)的操作,取款金额必须在余额范围内,否则提示“sorry!编写主函数,建立这个类的对象并测试,输入账号、姓名、余额后,按照查询余额、存款、查询余额、取款、查询余额的顺序调用类方法并输出。原创 2023-05-15 13:58:44 · 66 阅读 · 0 评论 -
A. 对象数组(类和对象)
课堂上我们谈到类这个概念,比如第一题我们有学生类这个抽象的概念,成千上万个学生都具有同样的属性,但针对某个具体学生来说,他/她具有自己的鲜明个性,比如计算机专业的王海同学,信息工程学院的李慧同学,那么我们是定义一个该类的变量:Student student;假设该类包含姓名、学号、性别、所属学院、联系电话等;),然后输入四个不同学生各项属性给数组里学生初始化(最好定义一个输入函数),然后输出该学生对象数组的各对象的姓名。时间限制1s 内存限制128MB。每行输出一个学生类对象的姓名。原创 2023-05-15 11:36:27 · 37 阅读 · 0 评论 -
E. 抄袭查找(结构体+指针+函数)
定义一个函数,返回值为一个整数,参数是两个结构体指针,函数操作是比较两张试卷的每道题目的答案,如果相同题号的答案相似度超过90%,那么就认为有抄袭,函数返回抄袭题号,否则返回0。相似度是指在同一题目中,两个答案的逐个位置上的字符两两比较,相同的数量大于等于任一个答案的长度的90%,就认为抄袭。每张试卷包含:学号(整数类型)、题目1答案(字符串类型)、题目2答案(字符串类型)、题目3答案(字符串类型)在一行中,把发现抄袭的两个学号和题目号输出,只输出第一次发现抄袭的题号,数据之间用单个空格隔开。原创 2023-05-15 10:59:04 · 37 阅读 · 0 评论 -
D. 谁是老二(结构体)
定义一个结构体,包含年月日,表示一个学生的出生日期。然后在一群学生的出生日期中找出谁的出生日期排行第二。要求:出生日期的存储必须使用结构体,不能使用其他类型的数据结构。要求程序全过程对出生日期的输入、访问、输出都必须使用结构。输出排行第二老的出生日期,按照年-月-日的格式输出。每行输入三个整数,分别表示年、月、日。时间限制1s 内存限制128MB。第一行输入t表示有t个出生日期。原创 2023-05-14 23:50:17 · 247 阅读 · 0 评论 -
C. 职工信息 (结构体)
程序实现初始化5名职工的信息,并对工作年限大于等于30年的职工每人加100元工资,分别输出工资变化之前和之后的所有职工的信息。编写程序,定义一个职工信息结构包括职工姓名、工作年限、工资总额。定义一个存放职工信息的结构数组。输出两部分,第一部分输出工资变化之前所有职工的信息,第二部分输出工资变化之后的所有职工的信息。输入5个员工的职工姓名、工作年限、工资总额,姓名的最大长度不超过20。时间限制1s 内存限制128MB。原创 2023-05-14 21:49:25 · 185 阅读 · 0 评论 -
B. 求最大值最小值(引用)
编写函数void find(int *num,int n,int &minIndex,int &maxIndex),求数组num(元素为num[0],num[1],...,num[n-1])中取最小值、最大值的元素下标minIndex,maxIndex(若有相同最值,取第一个出现的下标。每组测试数据输出两行,分别是最小值、最大值及其下标。输入n,动态分配n个整数空间,输入n个整数,调用该函数求数组的最小值、最大值下标。要求:在main函数中按样例格式输出结果,不能直接在find函数中输出。原创 2023-05-14 21:37:01 · 42 阅读 · 0 评论 -
A. 三数论大小(引用)
要求:定义一个函数,无返回值,函数参数是三个整数参数的引用,例如int &a, int &b, int &c。在函数内对三个参数进行排序。主函数调用这个函数进行排序。要求:不能直接对三个整数进行排序,必须通过函数而且是引用的方法。每行按照从大到小的顺序输出每个实例,三个整数之间用单个空格隔开。输入三个整数,然后按照从大到小的顺序输出数值。时间限制1s 内存限制128MB。第一行输入t表示有t个测试实例。要求:输出必须在主函数进行。第二行起,每行输入三个整数。原创 2023-05-14 18:28:46 · 26 阅读 · 0 评论 -
E.动态矩阵(指针与堆内存分配)
要求使用指针,结合new方法,动态创建一个二维数组,并求出该矩阵的最小值和最大值,可以使用数组下标法。不能先创建一个超大矩阵,然后只使用矩阵的一部分空间来进行数据访问、未知一个整数矩阵的大小,在程序运行时才会输入矩阵的行数m和列数n。第三行起,连续输入m行,每行n个数字,表示输入第一个矩阵的数值。第二行输入两个数字m和n,表示第一个矩阵的行数和列数。创建的矩阵大小必须和输入的行数m和列数n一样。时间限制1s 内存限制128MB。每行输出一个实例的最小值和最大值。第一行输入t表示t个测试实例。原创 2023-05-14 16:55:23 · 52 阅读 · 0 评论 -
D. 矩阵左转(指针与数组)
要求:除了矩阵创建和数据输入可以使用数组和数组下标的方法,其他过程对矩阵的任何访问都必须使用指针。提示:m行n列的二维矩阵,第i行第j列的元素与首元素的距离为i*n+j,序号从0开始计算。在输出的每行中,每个数据之间都用空格隔开,最后一个数据后面也带有空格。输入一个2*3的矩阵,将这个矩阵向左旋转90度后输出。连续两行输入一个2*3的矩阵的数据。时间限制1s 内存限制128MB。第一行输入t表示有t个测试实例。依次输出左转后的矩阵结果。原创 2023-05-14 14:46:01 · 29 阅读 · 0 评论 -
C. 字符串比较(指针与字符)
编写一个函数比较两个字符串,参数是两个字符指针(要求显式定义,例如char *S, char *T),比较字符串S和T的大小。如果S大于T,则返回1,如果S小于T则返回-1,如果S与T相等则返回0。2.在比较中,如果字符串S的字符大于字符串T的字符的数量超过小于的数量,则认为S大于T,如果等于则S等于T,如果小于则S小于T。例如S为aaccdd,T为eebbbb,每个位置比较得到S前两个字母都小于T,但后4个字母都大于T,最终认为S大于T。3.如果两个字符串长度不同,则更长的字符串为大。原创 2023-05-14 14:02:27 · 607 阅读 · 0 评论 -
B. 三串合一(指针与字符数组)
连续三行,每行输入数字a和b,表示每个子串的开始和结束位置。注意字符串的位置是按照一般意义从1开始计算,和编程中的数组位置不同。例如字符串abcdefg,开始位置是3,结束位置是5,那么子串就是cde。3. 使用动态数组的方法创建新的字符串,并且使用指针读取三个字符串的不同部分,并且复制到新字符串中,要求整个过程都不能使用数组下标。输入三个字符串,通过指针读取各个字符串的子串(子串是指字符串中连续的一小部分),把它们合并成一个新字符串。2. 输入后,根据三个字符串的子串的长度,计算出新字符串的长度。原创 2023-05-14 13:06:25 · 37 阅读 · 0 评论 -
A. 月份查询(指针数组)
已知每个月份的英文单词如下,要求创建一个指针数组,数组中的每个指针指向一个月份的英文字符串,要求根据输入的月份数字输出相应的英文单词。每行输出相应的月份的字符串,若没有这个月份的单词,输出error。时间限制1s 内存限制128MB。第一行输入t表示t个测试实例。接着每行输入一个月份的数字。9月 September。11月 November。12月 December。1月 January。2月 February。10月 October。原创 2023-05-14 00:47:06 · 32 阅读 · 0 评论 -
D. 动态数组(指针与数组)
第二行先输入一个大写字母表示数组类型,I表示整数类型,C表示字符类型,F表示浮点数类型;然后输入n表示数组长度。一开始未知数组长度,根据要求创建不同类型的指针,并且使用指针创建相应长度的数组,然后再完成不同的要求。要求程序整个过程不能使用数组下标,从数组创建、输入到搜索、比较、计算,到输出都必须使用指针。若要求创建整数数组,计算数组内所有数据的平均值。若要求创建字符数组,找出数组内的最大字母。若要求创建浮点数数组,找出数组的最小值。每个根据不同的数组类型输出相应的结果。时间限制1s 内存限制128MB。原创 2023-05-13 23:28:43 · 47 阅读 · 0 评论 -
C. 成绩查询(指针运算)
例如有11个学生,指针指向中间的学生也就是第6个学生,若输入序号3,即查询第3个学生的成绩,第3和第6之间距离为3,那么指针应该怎么运算呢?4. 输入一个序号,然后计算这个序号的元素和中间元素的距离,然后使用指针去访问。3. 使用++和--运算符,求出数组中间元素的前一个成绩和后一个成绩。第二行先输入n,表示有n个学生,然后再输入n个成绩(正整数)第三行输入1个序号,表示要查询成绩的学生的序号。第一行输出数组中间元素的前一个成绩和后一个成绩。已知一组学生成绩,然后根据输入的序号查询成绩。原创 2023-05-13 21:42:23 · 468 阅读 · 0 评论 -
B.货币兑换(指针与常量)
定义一个常量指针,根据需求指针指向不同的汇率,然后计算出各种货币兑换为人民币的数量。每行先输入一个字母,表示货币类型,然后再输入一个数字(正浮点数),表示货币数量。要求:不能直接使用汇率常量进行计算,必须使用常量指针,只能使用一个指针。港币汇率为0.8065,表示1元港币币兑换0.8065元人民币。日元汇率为0.0516,表示1元日元兑换0.0516元人民币。欧元汇率为6.6744,表示1欧元兑换6.6744元人民币。D表示美元,E表示欧元,Y表示日圆,H表示港币。输入一个t表示有t个测试实例。原创 2023-05-12 12:43:06 · 77 阅读 · 0 评论 -
A. 三数论大小(指针)
要求:用三个指针分别指向这三个整数,排序过程必须通过这三个指针来操作,不能直接访问这三个整数。输出时,必须使用这三个指针,不能使用存储三个整数的变量。输入三个整数,然后按照从大到小的顺序输出数值。每行按照从大到小的顺序输出每个实例。第一行输入t表示有t个测试实例。第二行起,每行输入三个整数。内存限制 128MB。原创 2023-05-12 00:40:47 · 60 阅读 · 1 评论