C++ 练习
写在前面
- 括号内的为推荐使用方法,并非是唯一解,不要被括号里的方法束缚住(不过还是建议按顺序学的同学先用括号里的东西解啦:D)
- 做不出来可查看题解或询问人工智能,但看完后一定 要自己手敲一遍
- 欢迎在群里问问题,但在问之前请确保自己已经思考过了
- 本题单只是最低限度要做的题,初学者想要完全掌握需要自己多找题多敲
基础阶段 采用洛谷题库
顺序结构
P1001
(基本刷题系统操作)
P5706
(运算、输入、输出 涉及多种数据类型)
P5708
(复杂一些的运算)
分支结构
P5711
(逻辑判断)
P5713
(if-else)
P5715
(嵌套if)
P1909
(switch if 嵌套组合)
循环结构
P5718
(for)
P5720
(while)
P1980
(for套while)
P5723
(break与continue的使用)
数组
P1427
(数组的基本应用)
P5727
(使用数组存放中间计算结果)
P5728
(二维数组)
P5729
(多维数组)
P5730
(数组存储字符)
字符串
P1914
(scanf的使用与字符元素的处理)
P1125
(strlen和strcpy的使用与字符数组)
P1957
(更多与字符相关函数的使用)
P5734
(string的使用)
函数与结构体
P5735
(函数)
P5738
(函数传递数组名与局部变量)
P5739
(递归函数)
P5741
(结构体的定义与其元素访问)
P5742
(构造函数)
数据结构(选做)
P1996
(链表)
P1981
(栈)
P1540
(队列)
以下是自命题阶段
需自己手动输入,此处不限制输入输出样式,自行发挥
指针
1. 指针 基本操作
题目描述
编写一个程序,声明两个整数变量 a 和 b,分别给它们赋值。然后分别声明两个指向整数变量 a 和 b 的指针,通过指针操作交换这两个变量的值。
输入输出
输入内容:交换前的 a 和 b 的值
输出内容:交换后的 a 和 b 的值
输入:
1 2
输出:
2 1
2. 指针与数组
题目描述
你现在是一只饥饿的恶龙,于是你抓来了许多人类决定饱餐一顿,但你的胃的容量是有限的,于是你决定估摸着你的饭量进食,并且为了吃到多种口感的人你决定选择多个年龄的人进食。好消息是你抓来了超多人类,坏消息是由于你很久没吃饭了胃已经坏了所以吃完后会把人吐出来。
你需要完成以下任务:
- 使用指针分配一个大小为‘n’的数组,‘n’由你决定,代表你要吃的人类数量。
- 依次输入你要吃的‘n’个人的年龄,并将其存储在数组中。
- 输出数组这些人的年龄以便你对照着挑选对应的人。
- 吐出来这些人,释放数组。
输入输出
输入内容:吃的人类数量 n 及 n 个人类对应的年龄
输出内容:吃的所有人的年龄
输入:
5
13 24 63 54 90
输出:
13 24 63 54 90
3. 指针与结构体
题目描述
定义一个表示“学生”的结构体,包含成员姓名和年龄。通过指向该结构体的指针访问和修改成员。
输入输出
输入内容:学生的名字和年龄
输出内容:修改后的学生信息
输入:
穆院士 233
输出:
姓名:穆院士,年龄:233
面向对象
1. 要开始了吗 从类开始的面向对象冒险!
题目描述
勇者正在为即将到来的冒险准备武器。请你帮助他创建一把“剑”。定义一个类 Sword 来表示这把剑,包含以下功能:
- 成员变量 length(剑的长度)和 weight(剑的重量)
- 一个构造函数,用于初始化剑的长度和重量
- 一个成员函数 getPower,返回剑的战斗力(计算公式:length * weight)
输入输出
输入内容:剑的长度和重量
输出内容:剑的战斗力
输入:
5 10
输出:
50
2. 一击即破 析构函数!
题目描述
在这次冒险中,勇者还需要一副护甲来保护自己。定义一个类 Armor,它有以下功能:
- 成员变量 name(护甲名称)和 defense(护甲的防御力)
- 一个构造函数用于初始化护甲的名称和防御力
- 一个析构函数,在护甲被废弃时输出 "护甲已被摧毁"
- 一个成员函数 showInfo,输出护甲的名称和防御力
输入输出
输入内容:护甲的名称和防御力
输出内容:护甲的名称、防御力,和销毁时的提示信息
输入:
超牛护甲 5000000
输出:
超牛护甲 5000000
护甲已被摧毁
3. 升级了 类的继承!
题目描述
勇者还需要掌握一种魔法。定义一个基类 Magic,它有一个虚函数 getPower。然后定义两个派生类:
- FireMagic 表示火焰魔法,有一个 powerLevel 成员变量,表示魔法的威力
- IceMagic 表示冰冻魔法,有成员变量 freezeLevel,表示冰冻效果
- 派生类需要根据各自的属性实现 getPower 函数,返回各自的魔法威力
输入输出
输入内容:火焰魔法的威力和冰冻魔法的效果
输出内容:火焰魔法和冰冻魔法的总威力
输入:
100 80
输出:
火焰魔法威力: 100
冰冻魔法效果: 80
4. 驯服野生怪物--重载!
题目描述
勇者的冒险中,他可以通过合成不同的宝石来增强战斗力。定义一个类 Gem,它有两个属性 strength(力量)和 magic(魔法),表示宝石的力量值和魔法值。重载加法运算符 +,使得两个 Gem 可以相加,合成一个新的宝石,新的宝石的力量值和魔法值是两个宝石对应属性的和。
输入输出
输入内容:两个宝石的力量值和魔法值
输出内容:合成后的宝石的力量值和魔法值
输入:
宝石1: 力量 10, 魔法 20
宝石2: 力量 15, 魔法 25
输出:
合成后的宝石: 力量 25, 魔法 45
5. 旅途的终止 是时候睡觉了!
题目描述
勇者每一次冒险都会留下战斗记录,定义一个类 BattleRecord,该类有一个静态成员变量 count,用于记录勇者总共经历了多少次战斗。每当创建一个 BattleRecord 对象时,count 增加,并通过静态函数 getCount 来返回当前的战斗次数.
输入输出
输入内容:无
输出内容:当前的战斗次数
输出:
勇者总共经历了 3 次战斗