练习21.1-结构体-文件 从键盘输入两个学生数据,写入一个文件中,再读出这两个学生的数据显示在屏幕上。 练习21.2-结构体-文件 建立一个文件,向其中写入一组学生的姓名和成绩,然后从该文件中读出成绩大于80分的学生信息,并显示在屏幕上 练习22.1-编写软件-猜数字游戏-链表 猜数字游戏是令游戏机随机产生一个100以内的正整数,用户输入一个数对其进行猜测,需要你编写程序自动对其与随机产生的被猜数进行比较,并提示大了(“Too big”),还是小了(“Too small”),相等表示猜到了。如果猜到,则结束程序。程序还要求统计猜的次数,如果1次猜出该数,提示“Bingo!”;如果3次以内猜到该数,则提示“Lucky You!”;如果超过3次但是在N(>3)次以内(包括第N次)猜到该数,则提示“Good Guess!”;如果超过N次都没有猜到,则提示“Game Over”,并结束程序。如果在到达N次之前,用户输入了一个负数,也输出“Game Over”,并结束程序。 要求:游戏结束时(无论是否猜到)显示玩家猜数字的过程(用链表)。 练习22.2 单链表逆序输出 练习22.3 单链表排序 位运算练习 1.位运算-二进制输出 按二进制位输出一个整数。例如,1000=0000 0011 1110 1000B 2.位运算-值交换(自己画一画过程) 交换两个变量的值,不使用中间变量。 3.位运算-求绝对值 使用位运算求一个数的绝对值。 练习1: 下面是一个类的测试程序,设计出能使用如下测试程序的类。 ![[1003e54f07f1f747ac8c0cfdf1516da.png]]![[c9b0899e65d2d97e1ba4a70bb4fe2df.png]] 练习2: 设计一个立方体类Box,它能计算并输出立方体的体积和表面积。要求: ·(1) 包含成员变量m_a(立方体边长)。 ·(2) 包含函数SetA(doublea)(设置立方体边长)、GetVolume()(计算体积)、GetArea()(计算表面积)。 ·(3) 包含函数Display(),用来输出计算的结果。 ·(4)设计测试用主函数main(),用来测试Box类。 练习3: 设计一个Rectangle类。要求: ·(1) 包含两个成员变量m_length和m_width,其默认值为1。 ·(2) 包含成员函数Perimeter()计算长方形的周长,Area()计算长方形面积。 ·(3) 包含成员函数SetWidth()和GetWidth()用来设置和得到m_width的值,SetLength()和GetLength()用来设置和得到m_length的 值。Set...()函数应验证m_length和m_width均为0.0到20.0之间的浮点数。 ·(4)编写主函数,测试Rectangle类。 练习5: 编写一个Person类,包括: ·1、普通数据成员:姓名,性别,年龄。 ·2、三个构造函数:无参数构造函数,有参数构造函数(参数:姓名的指针,年龄,性别),拷贝构造函数。 ·3、析构函数, 输出人员信息函数print()。 编写main ()函数,分别调用三种构造函数,创建三个对象P1、P2、P3,其中P3的创建是用P2通过深拷贝复制得到的 练习6: 编写一个程序,输入N个学生数据,包括学号、姓名、成绩,输出这些学生数据并计算平均分。要求: ·(1) 设计一个学生类Stud,除了包括学号、姓名和成绩数据成员外,有两个静态变量分别存放总分和人数。 ·(2)有两个普通成员函数SetData()和Disp(),分别用于给数据成员赋值和输出数据成员的值。另有一个静态成员函数Avg(),它用于 计算平均分。 ·(3) 在main()函数中定义一个对象数组用于存储输入的学生数据。 练习7: 有一个学生类Student,包括学生姓名、成绩,要求: ·(1)设计一个友元函数Compare(),比较两个学生成绩的高低。 ·(2) 在main()函数中定义一个对象数组用于存储输入学生的数据,并求出最高分和最低分的学生。 练习2-1: 请编写程序完成如下设计 ·学生类,数据成员包括学号(公有)、姓名(保护)、年龄(私有)、学生数(静态)。学生数用来统计构造出来的学生对象数量 ·课代表类,继承自学生类,数据包括负责课程编号(公有)、课程评分(公有) ·要求使用构造初始化符表“:”的形式进行构造,每个类有相关数据的输出显示函数 ·在主函数中构造对象并输出显示相关数据 练习2-2: ·定义一个点Point类,数据成员是浮点型横纵坐标; ·定义一个颜色类Color数据成员只有颜色(字符数组#000000~#FFFFFF); ●一个直线类Line,数据成员是两个Point对象,表示起点和终点(即Point两个对象为Line的内嵌对象); ·一个三角形类Triangle,继承自Line和Color,数据成员有三角形的高height,三角形理解成以基类Color为颜色,以基类直线为底,以 height为高的直角三角形,(即直线和高分别为两条直角边)请实现相关函数,计算三角形的颜色、周长和面积并给出相关输出 ```cpp #include int main(){ } ``` 练习2-3: 设计日期类和时间类,并以此两类为基类派生日期时间类 要求: 日期类包括年、月、日等成员 ·时间类包括时、分、秒等成员 ·日期时间类能够实现日期时间的求差、比较大小的功能 1、使用运算符重载实现该功能,以时间日期类的对象描述日期时间之差 2、假设每个月都是30天,不考虑闰年 3、不考虑公元前 练习2-4: 设计圆类,并以圆类为基类,派生圆柱类、圆锥类和圆球类(分别求出其面积和体积) 要求: ·自行确定各类具有的数据成员、函数成员,如果需要对象成员,再自行设计相关类; ·在设计程序过程中,尽量多地涉及类继承与多态性的重要概念,如虚函数、纯虚函数、抽象基类等等。 注:应当用圆类继承一个区域类(或形状类) 练习8: 设计一个Rational类,进行带分数的运算。要求: ·(1) 包含两个整数成员变量表示分子和分母。 ·(2) 包含一个对所声明对象初始化的构造函数。不提供参数时,构造函数应提供默认值。分数存放成简化形式,例如分数“2/4”应在 对象中存放成分子1和分母2的形式。 ·(3)对下列情况提供public成员函数: a)两个Rational值相加,结果保存成简化形式。 b) 两个Rational值相减,结果保存成简化形式。 c) 两个Rational值相乘,结果保存成简化形式。 d)两个Rational值相除,结果保存成简化形式。 e)按a/b形式打印Rational值,其中a为分子,b为分母。 ·(4)编写主函数,测试Rational类。 ·(5)将上述成员函数改为运算符重载的形式,分别作为成员函数和友元函数实现上述功能。 练习3-4: 编写一个类模板,完成对不同数据类型的数组的排序(小到大)操作。 如: ●int array[5]={3,6,2,1,4}; ●double array[5]={3.1,1.2,4.5,1.1,0.2}; 练习3-5: 定义一个堆栈类模板,实现不同数据类型数据的入栈和出栈操作,堆栈的大小用非类型参数指定。 练习3-6: 用类模板创建单链表,并实现在链表里增加一个节点和删除一个节点的操作。 练习:文本文件-九九乘法表![[72d1094207daa7f6c6a98a4f10275fd.png]] 练习5-7:文件读写、二进制文件 编写一个程序,将5种商品的商品号、商品名、单价和数量写入二进制文件f.bin中,然后将该文件中的数据读到数组中,并将其输出到屏幕上。![[c34b2009414956177d593a62b4f2cc4.png]] 练习5-8:文件读写、二进制文件 编写一个程序从文件f.bin(第1题已建立的文件)中读出任意一种商品的数据并输出到屏幕上。比如输入整数2,则输出第二种商品的信息 ![[1746003581975944b10199ea7232702.png]]