一、📍C++ 的分支结构(if / else / switch)魔法课堂开讲了!
🧙 第一章:什么是“分支结构”?
想象一下,你在玩一款冒险游戏:
👦 小勇士走到岔路口
👉 如果有钥匙 → 打开宝箱
👉 如果没钥匙 → 去找钥匙
这就是分支结构!
📌分支结构的作用:
让程序“学会思考”,根据条件选择不同的路
🌱 第二章:单分支结构(只做一件事)
🎯 语法长这样:
if (条件) { 要做的事情; }📌 意思是:
如果条件是真的,就做这件事
📖 故事 1:及格小助手
👦 小明考试考了score分
int score = 85; if (score >= 60) { cout << "恭喜你,考试及格啦!" << endl; }🧠 发生了什么?
分数 ≥ 60 → 条件成立 → 打印一句话
分数 < 60 → 什么也不做(程序很安静 😄)
🌿 第三章:双分支结构(要么这样,要么那样)
🎯 语法:
if (条件) { 事情A; } else { 事情B; }📌 意思是:
如果条件成立 → 做 A
否则 → 做 B
📖 故事 2:下雨要不要带伞 ☔
bool isRain = true; if (isRain) { cout << "下雨了,记得带伞!" << endl; } else { cout << "天气晴朗,放心出门吧!" << endl; }🧠 小朋友这样理解:
isRain == true→ 带伞isRain == false→ 不带伞
👉一定会选一条路走
🌳 第四章:多分支结构(很多选择)
🎯 语法(最常见):
if (条件1) { ... } else if (条件2) { ... } else if (条件3) { ... } else { ... }📌 意思是:
从上往下,一个一个试
第一个成功的,就执行!
📖 故事 3:成绩评语机 📊
int score = 92; if (score >= 90) { cout << "优秀!你是学霸!" << endl; } else if (score >= 75) { cout << "良好,继续加油!" << endl; } else if (score >= 60) { cout << "及格,不要放松哦!" << endl; } else { cout << "不及格,要努力啦!" << endl; }🧠 程序的想法是:
1️⃣ 分数 ≥ 90?
2️⃣ 不行?那 ≥ 75?
3️⃣ 再不行?≥ 60?
4️⃣ 都不是?那就最后一个
📌只会执行一个分支
🔔 第五章:开关语句 switch(选菜单用)
有时候,我们不是比大小,而是选一个确定的值
比如:菜单、按钮、星期几……
🎯 语法:
switch (变量) { case 值1: 代码; break; case 值2: 代码; break; default: 代码; }📌 重点小口诀:
case:情况break:停下!default:都不对时的“备用方案”
📖 故事 4:自动点餐机 🍔
int choice = 2; switch (choice) { case 1: cout << "你点了汉堡 🍔" << endl; break; case 2: cout << "你点了炸鸡 🍗" << endl; break; case 3: cout << "你点了可乐 🥤" << endl; break; default: cout << "没有这个选项哦!" << endl; }🧠 解释:
choice == 2→ 输出炸鸡break很重要!不然会“串台” 😅
🧠 第六章:if 和 switch 怎么选?
| 情况 | 用谁更好 |
|---|---|
| 比大小(≥ ≤) | if / else |
| 多个区间 | if / else if |
| 固定选项(1、2、3) | switch |
| 判断复杂条件 | if |
🎒 第七章:小学生必记 5 句话口诀
🌟口诀时间🌟
1️⃣if是“如果”
2️⃣else是“否则”
3️⃣else if是“再试试”
4️⃣switch是“选菜单”
5️⃣break是“停下别跑了!”
🎉 小结
现在我们学会了:
✅ 单分支:只做一件事
✅ 双分支:二选一
✅ 多分支:多条路选一条
✅ switch:菜单式选择
📌 从现在起,你的程序已经会思考、会选择、会判断啦!
二、下面我们就直接进入「C++ 选择语句 · 魔法进阶挑战」
🧙♂️ 魔法题 1(⭐ 入门)
🧩 题目:魔法门是否打开?
📖 故事
小勇士走到一扇魔法门前,
只有当能量值 ≥ 100 时,魔法门才会打开。
📥 输入
一个整数power
📤 输出
如果
power >= 100,输出
魔法门打开!✅ 参考代码
#include <iostream> using namespace std; int main() { int power; cin >> power; if (power >= 100) { cout << "魔法门打开!" << endl; } return 0; }🧠 解析
这是单分支 if
条件成立才执行
条件不成立,程序什么也不做
📌适合练习:条件判断
🧙♂️ 魔法题 2(⭐⭐)
🧩 题目:魔法宠物的心情
📖 故事
魔法宠物有一个心情值:
心情 ≥ 50 → 开心 😊
心情 < 50 → 生气 😠
📥 输入
一个整数mood
📤 输出
开心或
生气
✅ 参考代码
#include <iostream> using namespace std; int main() { int mood; cin >> mood; if (mood >= 50) { cout << "开心" << endl; } else { cout << "生气" << endl; } return 0; }🧠 解析
这是双分支 if-else
一定会执行其中一个分支
📌适合练习:二选一
🧙♂️ 魔法题 3(⭐⭐⭐)
🧩 题目:魔法学院等级评定
📖 故事
根据分数评定等级:
| 分数 | 等级 |
|---|---|
| ≥ 90 | S |
| ≥ 75 | A |
| ≥ 60 | B |
| < 60 | C |
📥 输入
一个整数score
📤 输出
一个字符:S / A / B / C
✅ 参考代码
#include <iostream> using namespace std; int main() { int score; cin >> score; if (score >= 90) { cout << "S" << endl; } else if (score >= 75) { cout << "A" << endl; } else if (score >= 60) { cout << "B" << endl; } else { cout << "C" << endl; } return 0; }🧠 解析
从上往下判断
只会执行第一个满足条件的分支
顺序不能乱(大条件在前)
📌适合练习:多分支
🧙♂️ 魔法题 4(⭐⭐⭐⭐)
🧩 题目:魔法星期判断器
📖 故事
魔法世界里:
| 数字 | 星期 |
|---|---|
| 1 | 魔法星期一 |
| 2 | 魔法星期二 |
| 3 | 魔法星期三 |
| 4 | 魔法星期四 |
| 5 | 魔法星期五 |
| 6 | 魔法星期六 |
| 7 | 魔法星期日 |
其他数字 →输入错误
📥 输入
一个整数day
📤 输出
对应的文字
✅ 参考代码
#include <iostream> using namespace std; int main() { int day; cin >> day; switch (day) { case 1: cout << "魔法星期一" << endl; break; case 2: cout << "魔法星期二" << endl; break; case 3: cout << "魔法星期三" << endl; break; case 4: cout << "魔法星期四" << endl; break; case 5: cout << "魔法星期五" << endl; break; case 6: cout << "魔法星期六" << endl; break; case 7: cout << "魔法星期日" << endl; break; default: cout << "输入错误" << endl; } return 0; }🧠 解析
switch适合固定选项break防止继续往下跑default是“兜底方案”
📌适合练习:switch 用法
🧙♂️ 魔法题 5(⭐⭐⭐⭐⭐)
🧩 题目:魔法能量组合判断
📖 故事
输入两个魔法数a和b:
如果
a和b都是正数 →双重光明如果只有一个是正数 →
半光明如果都不是正数 →
黑暗
📥 输入
两个整数a b
📤 输出
对应的文字
✅ 参考代码
#include <iostream> using namespace std; int main() { int a, b; cin >> a >> b; if (a > 0 && b > 0) { cout << "双重光明" << endl; } else if (a > 0 || b > 0) { cout << "半光明" << endl; } else { cout << "黑暗" << endl; } return 0; }🧠 解析
使用了逻辑运算符:
&&:并且||:或者
条件逐级判断,不能写反顺序
📌适合练习:条件组合
🧙♂️ 魔法题 6(⭐⭐⭐⭐⭐⭐ 终极)
🧩 题目:魔法自动售货机
📖 故事
魔法售货机规则:
1️⃣ 输入金币数量money
2️⃣ 输入物品编号id
| 编号 | 物品 | 价格 |
|---|---|---|
| 1 | 魔法水 | 5 |
| 2 | 魔法面包 | 8 |
| 3 | 魔法卷轴 | 12 |
规则:
如果编号不存在 →
无此物品如果钱不够 →
金币不足否则 →
购买成功
📥 输入
两个整数money id
📤 输出
对应结果
#include <iostream> using namespace std; int main() { int money, id; cin >> money >> id; int price = 0; switch (id) { case 1: price = 5; break; case 2: price = 8; break; case 3: price = 12; break; default: cout << "无此物品" << endl; return 0; } if (money >= price) { cout << "购买成功" << endl; } else { cout << "金币不足" << endl; } return 0; }🧠 解析(重点 ⭐)
switch 负责“选物品”
if 负责“判断钱够不够”
提前
return是一种“快速结束程序”的好办法
📌这是 if + switch 的综合题
🎓 题目回顾
| 题号 | 能力 |
|---|---|
| 1 | 单分支 |
| 2 | 双分支 |
| 3 | 多分支 |
| 4 | switch |
| 5 | 逻辑组合 |
| 6 | 综合判断 |
三、如果你现在已经学习过循环程序,下面我们开启:
《C++ 分支 + 循环 · 联合作战训练营》🧙♂️⚔️
🧙♂️ 第 1 题(⭐)
🔮 魔法倒计时
📖 故事
魔法炸弹将在 10 秒后爆炸,请从n倒数到 1。
📥 输入
一个整数n
📤 输出
从n到1,每行一个数字。
✅ 参考代码
#include <iostream> using namespace std; int main() { int n; cin >> n; while (n >= 1) { cout << n << endl; n--; } return 0; }🧠 解析
while负责重复没有分支,作为热身题
为后面“循环 + if”做准备
🧙♂️ 第 2 题(⭐⭐)
🧩 魔法数字判断
📖 故事
输入n个数字,如果是偶数,就喊一声“闪光!”
📥 输入
一个整数n,接着输入n个整数
📤 输出
每遇到偶数,输出一行闪光
✅ 参考代码
#include <iostream> using namespace std; int main() { int n, x; cin >> n; for (int i = 1; i <= n; i++) { cin >> x; if (x % 2 == 0) { cout << "闪光" << endl; } } return 0; }🧠 解析
for控制输入次数if判断偶数循环中嵌套分支
🧙♂️ 第 3 题(⭐⭐⭐)
🪄 魔法成绩统计
📖 故事
输入若干成绩,统计及格人数(≥60)
📥 输入
一个整数n,接着n个成绩
📤 输出
及格的人数
✅ 参考代码
#include <iostream> using namespace std; int main() { int n, score; cin >> n; int pass = 0; for (int i = 0; i < n; i++) { cin >> score; if (score >= 60) { pass++; } } cout << pass << endl; return 0; }🧠 解析
pass是计数器if决定是否 +1非常重要的基础模型 ⭐
🧙♂️ 第 4 题(⭐⭐⭐)
🧙 魔法咒语次数统计
📖 故事
小法师每天练习咒语,
如果输入的是1,表示成功一次。
输入n天,统计成功次数。
✅ 参考代码
#include <iostream> using namespace std; int main() { int n, x; cin >> n; int success = 0; for (int i = 0; i < n; i++) { cin >> x; if (x == 1) { success++; } } cout << success << endl; return 0; }🧠 解析
if (x == 1)是条件筛选典型的“循环 + 判断 + 累加”
🧙♂️ 第 5 题(⭐⭐⭐⭐)
🐉 魔法怪兽血量
📖 故事
怪兽血量为hp,
每一回合如果血量 > 0,就被攻击 -10。
请输出攻击了多少次。
✅ 参考代码
#include <iostream> using namespace std; int main() { int hp; cin >> hp; int times = 0; while (hp > 0) { hp -= 10; times++; } cout << times << endl; return 0; }🧠 解析
while条件本身就是一个分支条件控制循环是否继续
🧙♂️ 第 6 题(⭐⭐⭐⭐)
🧊 冰冻魔法筛选
📖 故事
输入n个温度,
如果温度 < 0,就被冻结,输出冰冻
✅ 参考代码
#include <iostream> using namespace std; int main() { int n, t; cin >> n; for (int i = 0; i < n; i++) { cin >> t; if (t < 0) { cout << "冰冻" << endl; } } return 0; }🧠 解析
循环不断读数据
if用来筛选特殊情况
🧙♂️ 第 7 题(⭐⭐⭐⭐⭐)
🧮 魔法数分类统计
📖 故事
输入n个整数,统计:
正数个数
负数个数
零的个数
✅ 参考代码
#include <iostream> using namespace std; int main() { int n, x; cin >> n; int pos = 0, neg = 0, zero = 0; for (int i = 0; i < n; i++) { cin >> x; if (x > 0) pos++; else if (x < 0) neg++; else zero++; } cout << pos << " " << neg << " " << zero << endl; return 0; }🧠 解析
一个循环,多个分支
else if非常重要分类思想 ⭐⭐⭐
🧙♂️ 第 8 题(⭐⭐⭐⭐⭐)
🧪 魔法耐力测试
📖 故事
连续输入数字,
一旦输入 0,立刻停止,并统计输入了多少个正数。
✅ 参考代码
#include <iostream> using namespace std; int main() { int x; int count = 0; while (true) { cin >> x; if (x == 0) break; if (x > 0) count++; } cout << count << endl; return 0; }🧠 解析
while(true)+breakbreak是“紧急出口”两个
if各司其职
🧙♂️ 第 9 题(⭐⭐⭐⭐⭐⭐)
🏪 魔法商店营业日
📖 故事
输入 7 天的营业额,
只统计营业额 ≥ 100 的天数
✅ 参考代码
#include <iostream> using namespace std; int main() { int money; int goodDays = 0; for (int i = 1; i <= 7; i++) { cin >> money; if (money >= 100) { goodDays++; } } cout << goodDays << endl; return 0; }🧠 解析
固定次数循环
分支判断“是否达标”
🧙♂️ 第 10 题(⭐⭐⭐⭐⭐⭐⭐ 终极)
🏰 魔法城门守卫系统
📖 故事
连续输入士兵编号:
编号是偶数→ 放行
编号是奇数→ 拦下
输入
-1→ 系统关闭
输出放行人数。
✅ 参考代码
#include <iostream> using namespace std; int main() { int x; int pass = 0; while (true) { cin >> x; if (x == -1) break; if (x % 2 == 0) { pass++; } } cout << pass << endl; return 0; }🧠 解析(重点 ⭐⭐⭐)
while控制无限输入if判断结束条件if判断业务规则真实系统模型
🎓 题目回顾
| 题号 | 能力 |
|---|---|
| 1–2 | 循环基础 |
| 3–4 | 循环 + 计数 |
| 5–6 | 条件控制 |
| 7 | 分类统计 |
| 8 | break |
| 9 | 实战统计 |
| 10 | 综合系统 |