Files
Obsidian/C/题目2.md

142 lines
7.6 KiB
Markdown
Raw Normal View History

2025-08-23 15:15:57 +08:00
练习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 <iostream>
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]]