C++ 创意编程 作业清单
← 三科总览
配套课文
Word 版 ↓
打印 / 存 PDF
C++ 创意编程 作业练习清单
顺序 → 选择 → 循环 → 数组 → 函数 → 指针,算法思维逐级进阶。
120
道作业
85
课全覆盖
35
基础 ★
64
进阶 ★★
21
挑战 ★★★
快速跳转
第1部分 初识 C++ —— 顺序结构
第2部分 智能的开始 —— 选择结构
第3部分 不辞辛苦 —— 循环结构
第4部分 点、线、面、立体的组合 —— 数组
第5部分 功能的复用 —— 函数
第6部分 C++ 的灵魂 —— 指针
第1部分 初识 C++ —— 顺序结构
22 题
1.
编写第一个 C++ 程序,输出一行“Hello, C++!”。
记住 main 函数和 return 0 的写法。
对应第1课 被玩坏的字符
★☆☆
2.
用 cout 输出一首 4 行的古诗,注意每行都要换行。
endl 或 \n 都可以换行。
对应第1课 被玩坏的字符
★★☆
3.
用 cin 读入一个整数,再把它原样输出。
cin >> 变量; 注意箭头的方向。
对应第2课 蹩脚的“ChatGPT”
★☆☆
4.
输入你的姓名和年龄,输出“我是XX,今年X岁”。
字符串用 string,注意头文件。
对应第2课 蹩脚的“ChatGPT”
★★☆
5.
输入两个整数,交换后输出(不使用第三个变量)。
可以用 a=a+b; b=a-b; a=a-b;
对应第3课 舞动的机器人
★☆☆
6.
趣味输入:输入一个字符,输出由它组成的 5×5 方阵。
两层循环,或直接用 5 行 cout。
对应第3课 舞动的机器人
★★☆
7.
计算 25×4+18÷3 的结果并输出,注意整数除法。
5/2 在 C++ 里等于 2。
对应第4课 一桩大买卖
★☆☆
8.
输入商品单价和数量,计算总价(保留 2 位小数)。
用 double 和 fixed<<setprecision(2)。
对应第4课 一桩大买卖
★★☆
9.
输入圆的半径,输出面积(π=3.14159,保留 2 位小数)。
半径要用 double 类型。
对应第5课 这面积总缺那么一点
★☆☆
10.
计算 1/3 并分别以 int 和 double 输出,比较差异并说明原因。
整数除法会丢掉小数部分。
对应第5课 这面积总缺那么一点
★★☆
11.
数羊:输出 1 到 100,每行 10 个数字。
用计数变量配合 if 控制换行。
对应第6课 睡不着就数羊
★☆☆
12.
统计 1-100 中数字“1”出现了多少次。
分别看个位和十位。
对应第6课 睡不着就数羊
★★☆
13.
输入层数 n,输出 n 行的星号金字塔(居中对齐)。
每行 = 空格 + 星号,找规律。
对应第7课 星号金字塔
★★☆
14.
输出倒金字塔,与正金字塔拼成一个菱形。
把正三角和倒三角的代码拼起来。
对应第7课 星号金字塔
★★★
15.
计算 10 的阶乘(10!)并输出。
注意结果会不会超出 int 范围。
对应第8课 可怕的核废水
★★☆
16.
核废水半衰:输入初始量和天数,每过 1 天衰减一半,输出剩余量。
循环里不断除以 2。
对应第8课 可怕的核废水
★★★
17.
陈醋和酱油互换:两个变量 a、b 交换值并输出。
经典三行交换法。
对应第9课 陈醋和酱油不能混为一瓶
★☆☆
18.
用 system() 调用系统命令(如清屏 cls),观察效果。
不同系统的命令不同,注意区分。
对应第10课 神秘的摩斯密码
★★☆
19.
安排出游车辆:输入总人数和每车容量,计算需要几辆车(有余数要多一辆)。
用 % 判断有没有余数。
对应第11课 安排出游车辆
★★☆
20.
输入一个十进制数,输出它的二进制表示(自己用除 2 取余法实现)。
把余数倒序拼起来。
对应第12课 小数字大学问
★★☆
21.
输入一个大写字母,输出它对应的 ASCII 码,以及它的小写形式。
大小写相差 32。
对应第13课 ASCII编码背后的秘密
★★☆
22.
用 setw 输出一张整齐的“商品价目表”,各列左对齐或右对齐。
setw 需要 #include <iomanip>。
对应第14课 列竖式做计算
★★☆
第2部分 智能的开始 —— 选择结构
24 题
23.
发热分诊台:输入体温,≥37.3 输出“请到发热门诊”,否则输出“普通门诊”。
if 的基本用法。
对应第15课 发热分诊台
★☆☆
24.
输入年龄,判断是否成年(≥18),输出不同提示。
注意比较运算符别写成赋值号。
对应第15课 发热分诊台
★★☆
25.
输入一个三位数,判断它是否同时能被 3 和 5 整除。
用 && 连接两个条件。
对应第16课 条件有点多
★☆☆
26.
输入三个数,输出其中最大的一个(用多个 if)。
先假设第一个最大,再逐个比较。
对应第16课 条件有点多
★★☆
27.
零售与批发:购买数量 ≥10 打 8 折,否则原价,输出应付金额。
const 定义常量更规范。
对应第17课 零售与批发
★☆☆
28.
输入一个整数,判断它是正数、负数还是零。
三种情况,注意 else 的归属。
对应第17课 零售与批发
★★☆
29.
血压侦测:输入高压和低压,用逻辑运算符判断是否正常。
正常范围:90-140 / 60-90。
对应第18课 血压侦测
★☆☆
30.
输入年份和月份,输出这个月有多少天(不考虑闰年就是 2 月 28 天)。
1、3、5、7、8、10、12 月是 31 天。
对应第18课 血压侦测
★★☆
31.
识别通道:输入坐标 (x, y),判断点在第几象限。
if 嵌套先判断正负。
对应第19课 识别通道
★☆☆
32.
输入三个边长,先判断能否构成三角形,再判断是等边、等腰还是直角。
三角形条件:任意两边之和大于第三边。
对应第19课 识别通道
★★★
33.
饭后小娱乐:输入骰子点数,输出对应的奖励或惩罚。
用 switch 更清爽。
对应第20课 饭后小娱乐
★★☆
34.
输入一个字母,用 isupper / islower 判断大小写并输出。
需要 #include <cctype>。
对应第21课 大写或小写
★☆☆
35.
输入一个字母,大写转小写、小写转大写后输出。
大小写 ASCII 相差 32。
对应第21课 大写或小写
★★☆
36.
输入两个数,输出它们的差的绝对值(不要直接用 abs)。
用 if 判断谁大谁小。
对应第22课 大要最大,小要最小
★☆☆
37.
输入三个人的身高,按从高到矮排序输出。
两两比较交换,需要三次比较。
对应第22课 大要最大,小要最小
★★☆
38.
排高矮:输入 5 个身高,用循环 + 选择排序输出有序结果。
先会三个数排序,再推广到五个。
对应第23课 排高矮
★★☆
39.
阶梯水价:0-10 吨 2 元/吨,11-20 吨 3 元/吨,20 吨以上 5 元/吨,输入用水量求水费。
分段计算,注意区间边界。
对应第24课 复杂的阶梯价
★★★
40.
输入三角形三边,输出它的面积(海伦公式)。
先用 if 判断能否构成三角形。
对应第25课 古老的三角形王国
★☆☆
41.
投票计数器:输入 5 张选票(1 或 2),用三目运算符统计并输出谁获胜。
条件 ? 值1 : 值2
对应第26课 投票计数器
★★☆
42.
匹配翻译:输入 1-7,用 switch 输出对应的星期英文。
别忘了每个 case 后的 break。
对应第27课 匹配翻译
★☆☆
43.
输入月份,用 switch 输出这个月的季节(春/夏/秋/冬)。
多个 case 可以共用一段代码。
对应第27课 匹配翻译
★★☆
44.
游戏段位:输入分数,用 switch 输出青铜/白银/黄金/钻石/王者。
可以把分数除以 20 再 switch。
对应第28课 从青铜到王者
★★☆
45.
心理测试小游戏:5 道题,每题输入 A/B,用 if 与 switch 嵌套统计结果。
先统计计数,再判断类型。
对应第29课 不太准的心理测试
★★★
46.
3、7 过游戏:从 1 数到 100,遇到 3 的倍数说“过”,7 的倍数也说“过”,同时是倍数说“过过”。
注意判断顺序,先判同时满足的情况。
对应第30课 3、7过游戏
★★★
第3部分 不辞辛苦 —— 循环结构
40 题
47.
用 while 循环打印 1 到 20。
while 的三要素:初值、条件、自增。
对应第31课 不睡觉的计算机
★☆☆
48.
输入一个正整数 n,用 while 输出它的所有位数(从个位开始)。
n%10 取个位,n/=10 去掉个位。
对应第32课 病毒弹窗
★☆☆
49.
趣味青蛙:输入青蛙每次跳的格子和总距离,计算几次能跳到。
用循环模拟每一次跳。
对应第33课 趣味青蛙游戏
★☆☆
50.
输入 10 个成绩,输出最高分、最低分和平均分。
边读边更新 max 和 min。
对应第33课 趣味青蛙游戏
★★☆
51.
竞赛得分:输入 7 个评委打分,去掉一个最高分和一个最低分后求平均分。
经典算法,注意保留小数。
对应第34课 竞赛得分
★★☆
52.
每天努力一点点:初始能力值 1,每天进步 1%,求 365 天后的能力值。
对比每天退步 1% 的结果。
对应第35课 每天努力一点点
★★☆
53.
输入一个小数,判断它有几位小数(用循环不断乘 10 比较)。
浮点比较要小心精度。
对应第36课 小数位数的纠结
★★☆
54.
求两个数的最小公倍数(用穷举 + break)。
从较大的数开始往上找。
对应第37课 最小公倍数
★★☆
55.
求两个数的最大公约数(辗转相除法)。
while(b){ t=a%b; a=b; b=t; }
对应第38课 最大公约数
★★☆
56.
用最大公约数求最小公倍数,对比穷举法效率。
LCM = a*b/GCD
对应第38课 最大公约数
★★★
57.
冰雹猜想:输入一个正整数,奇数则乘 3 加 1,偶数则除以 2,直到变成 1,输出每一步。
别忘了输出总步数。
对应第39课 神奇的冰雹猜想
★★☆
58.
暴力破解:一个三位数密码,已知各位数字之和为 15,输出所有可能的密码。
三层循环穷举。
对应第40课 暴力破解
★★☆
59.
输入一个数,找出所有能把它整除的数(因数)。
循环到它的一半即可。
对应第40课 暴力破解
★★★
60.
用 do-while 实现密码箱:反复输入密码直到正确为止。
do-while 至少执行一次。
对应第41课 无限次的密码箱
★☆☆
61.
对比 while 和 do-while:分别写同一个程序,说明区别。
条件一开始就不成立时差别最明显。
对应第41课 无限次的密码箱
★★☆
62.
倒立的数字:输入一个整数,把它倒序输出。
反复 %10 和 /10。
对应第42课 倒立的数字
★★☆
63.
判断一个整数是不是回文数(正着读反着读一样)。
倒过来和原数比较。
对应第42课 倒立的数字
★★☆
64.
用 for 循环打印 1 到 100。
for(初值; 条件; 变化)
对应第43课 紧箍咒
★☆☆
65.
分成两队:输入 10 个身高,奇数身高进 A 队,偶数进 B 队,输出两队人数。
for + if + 两个计数器。
对应第44课 分成两队
★☆☆
66.
求 1-100 中所有能被 7 整除的数的和。
累加前先判断。
对应第44课 分成两队
★★☆
67.
输入 n,求 1+2+…+n 的和(用 for)。
对比 while 版本。
对应第45课 求和升级
★☆☆
68.
给不起的麦子:棋盘第 1 格放 1 粒,以后每格翻倍,求 64 格总共多少粒。
体会“指数爆炸”与整数溢出。
对应第46课 给不起的麦子
★★☆
69.
谁是窃贼:甲乙丙丁四人中一人是小偷,四人各说一句话,只有一人说假话,编程找出小偷。
穷举 + 逻辑判断。
对应第47课 谁是窃贼
★★★
70.
输出 A 到 Z 的所有大写字母及其 ASCII 码。
字符可以当循环变量。
对应第48课 字母游戏
★☆☆
71.
打印 1-20,但跳过所有 5 的倍数(用 continue)。
continue 跳过本次循环体剩余部分。
对应第49课 我要继续
★☆☆
72.
输出斐波那契数列的前 30 项。
a, b = b, a+b 的 C++ 写法。
对应第50课 大自然的神奇数列
★★☆
73.
输入一个数,判断它是不是质数(用标记法)。
循环到 sqrt(n) 就可以。
对应第51课 我是质数吗
★★☆
74.
输出 100 以内的所有质数,每行 5 个。
两层循环:外层枚举,内层判断。
对应第51课 我是质数吗
★★★
75.
输出 1e7、1.7e+007 等科学记数法对应的普通数字。
理解科学记数法不是乱码。
对应第52课 1.7e+007不是乱码
★★☆
76.
分数计算器:输入两个分数,完成加、减、乘、除并输出最简结果。
通分 + 约分(用最大公约数)。
对应第53课 分数也能计算
★★★
77.
用循环嵌套输出 5 行 5 列的星号方阵。
外层管行,内层管列。
对应第54课 危险!危险!
★☆☆
78.
输出直角三角形、等腰三角形和菱形各一个。
找空格和星号的数量规律。
对应第54课 危险!危险!
★★☆
79.
字母闪烁:输出一个由字母组成的动画效果(三重循环延时)。
注意别让循环次数太多。
对应第55课 字母闪烁
★★★
80.
骰子电子屏:模拟掷骰子 100 次,统计每个点数出现的次数。
用数组计数 + rand()。
对应第56课 骰子电子屏
★★☆
81.
输入层数,输出一棵圣诞树(三角形树冠 + 树干)。
分两部分:树冠循环 + 树干循环。
对应第57课 一棵圣诞树
★★☆
82.
输出完整的九九乘法表。
注意对齐,用 setw。
对应第58课 经典之九九乘法表
★★☆
83.
鸡兔同笼:输入头和脚的总数,输出鸡和兔各有多少只。
穷举鸡的数量即可。
对应第59课 经典之鸡兔同笼
★★☆
84.
百钱百鸡:公鸡 5 钱、母鸡 3 钱、小鸡 3 只 1 钱,100 钱买 100 只鸡,输出所有方案。
三重循环或两重循环优化。
对应第60课 经典之百钱百鸡问题
★★★
85.
输入年份和月份,输出这个月的日历(注意星期对齐和闰年)。
先算这个月 1 号是星期几。
对应第61课 一本日历
★★★
86.
有人说谎:5 个人各说一句话,只有 2 人说谎,编程找出真相。
穷举 + 逻辑表达式。
对应第62课 有人说谎
★★★
第4部分 点、线、面、立体的组合 —— 数组
13 题
87.
定义长度为 10 的整型数组,输入 10 个数后原样输出。
下标从 0 开始。
对应第63课 加强训练
★☆☆
88.
统计校服:输入 20 个同学的校服尺码,统计每种尺码的人数。
用数组做计数器。
对应第64课 统计校服
★☆☆
89.
输入 10 个数,统计其中大于平均数的有多少个。
先求平均,再遍历统计。
对应第64课 统计校服
★★☆
90.
热闹的火柿节:输入每天卖出的柿子数,输出总销量和销量最高的是第几天。
记录最大值的下标。
对应第65课 热闹的火柿节
★★☆
91.
用冒泡排序把 10 个数从小到大排列,并输出每一轮的中间结果。
相邻比较交换,外层 n-1 轮。
对应第66课 经典之冒泡排序
★★☆
92.
用选择排序把 10 个数从大到小排列。
每轮找最值,放到已排好部分的末尾。
对应第67课 经典之选择排序
★★☆
93.
对比冒泡排序和选择排序:各排序 20 个数,统计比较次数和交换次数。
体会两种算法的效率差别。
对应第67课 经典之选择排序
★★★
94.
字符串密码:输入一个字符串,把每个字符后移 3 位后输出(凯撒加密)。
字符数组 + ASCII 运算。
对应第68课 字符串密码
★★☆
95.
输入一个字符串,统计其中字母、数字和空格的个数。
用 isalpha / isdigit 判断。
对应第68课 字符串密码
★★☆
96.
定义一个 3×3 的二维数组,输入后按矩阵形式输出。
两层循环输入输出。
对应第69课 二维矩阵
★☆☆
97.
求一个 3×4 矩阵的每一行之和与所有元素的总和。
行列下标别写反。
对应第69课 二维矩阵
★★☆
98.
把一个 3×3 矩阵顺时针旋转 90 度后输出。
找下标变换规律:a[i][j] → a[j][n-1-i]。
对应第70课 翻转钥匙
★★☆
99.
输入 5×5 矩阵,求两条对角线元素之和。
主对角线 i==j,副对角线 i+j==4。
对应第70课 翻转钥匙
★★★
第5部分 功能的复用 —— 函数
13 题
100.
定义一个打印欢迎语的函数,在主程序中调用 3 次。
函数要先声明或定义在调用之前。
对应第71课 组装一架飞机
★☆☆
101.
把“组装飞机”的步骤拆成 3 个函数,主程序依次调用。
体会“分而治之”。
对应第71课 组装一架飞机
★★☆
102.
写一个 max(a, b) 函数返回两个数中的较大值。
注意 return 的类型。
对应第72课 挑个最大的
★☆☆
103.
写一个函数把十进制数转成二进制输出。
参数是要转换的数。
对应第73课 进制小case
★☆☆
104.
写一个函数把十进制转成任意进制(2、8、16)。
两个参数:数值和目标进制。
对应第73课 进制小case
★★☆
105.
写一个函数计算两个数的加、减、乘、除(通过参数返回多个结果)。
可以用引用参数。
对应第74课 计算小能手
★☆☆
106.
写一个判断质数的函数 isPrime(n),返回 bool。
主程序里调用它输出 100 以内质数。
对应第74课 计算小能手
★★☆
107.
改错:全局变量和局部变量重名导致结果错误,请修复并说明作用域。
局部变量会“遮蔽”全局变量。
对应第75课 我和你一样却不一样
★★☆
108.
写一个函数,用静态局部变量记录自己被调用了几次。
static 变量只初始化一次。
对应第75课 我和你一样却不一样
★★☆
109.
移位加密:写一个函数把字符串每个字符后移 k 位(k 为参数)。
函数 + 字符数组。
对应第76课 移位加密
★★☆
110.
写一个函数接收数组和长度,返回数组平均值。
数组作为参数要传长度。
对应第77课 数组也能传
★★☆
111.
写一个函数实现数组的冒泡排序(数组作为参数传入)。
在函数里修改数组会影响原数组。
对应第77课 数组也能传
★★★
112.
写一个 factorial(n) 函数,并用它求 1!+2!+…+10! 的和。
函数可以自己调用自己(递归),也可以用循环。
对应第78课 阶乘再求和
★★★
第6部分 C++ 的灵魂 —— 指针
8 题
113.
定义变量 a,用指针 p 指向它,通过 p 输出 a 的地址和值。
& 取地址,* 解引用。
对应第79课 探寻宝藏的地址
★☆☆
114.
通过指针修改变量的值,观察原变量的变化。
*p = 100;
对应第79课 探寻宝藏的地址
★★☆
115.
用指针遍历一个数组,输出每个元素。
p++ 会跳到下一个元素。
对应第80课 穿越时空
★☆☆
116.
投票表决:输入 5 张选票,用指针操作数组统计票数。
用 *(p+i) 访问元素。
对应第81课 投票表决
★★☆
117.
用指针找到数组中的最大值(“指向火车头”)。
用指针记录最大值的位置。
对应第82课 指向火车头
★★☆
118.
用指针实现字符串的连接(接上就是喜欢)。
字符指针逐个字符处理。
对应第83课 接上就是喜欢
★★☆
119.
写一个 swap 函数,用指针参数真正交换两个变量的值(对比值传递版本)。
为什么普通的参数交换不生效?
对应第84课 函数里的交换
★★★
120.
综合:用指针实现数组的逆序存放,并说明指针与数组、函数的关系。
两个指针,一头一尾对调。
对应第85课 双双指向
★★★
使用建议:每学完一课做对应的 1–2 题;★ 为课堂当堂完成,★★ 为课后作业,★★★ 为选做挑战。 勾选框可直接点击打勾(也可打印后在纸上打勾)。遇到卡住的题,回到对应课文页看原书讲解。