🔥 任务背景
你在「编程王国」的冒险继续!这次,你需要修复一座古老的「符文计算祭坛」。祭坛的魔力来源于四个神秘符文(+ - * /),但年久失修导致运算混乱。用 C++ 编写一个「四则运算计算器」,让祭坛重现光辉!
🧠 语法知识:解锁新技能
技能 1️⃣:switch 语句 —— 激活符文的力量
char symbol = '+'; // 运算符符文(+ - * / 中的一个)
switch (symbol) { // 根据符文类型执行不同计算
case '+':
cout << a + b;
break; // 必须用 break 停止!
case '-':
cout << a - b;
break;
// 补充 * 和 / 的 case
default: // 如果输入了未知符文
cout << "符文破碎了!";
}
技能 2️⃣:do-while 循环 —— 让祭坛重复运转
do {
// 先执行一次计算
cout << "要继续吗?(y/n)";
cin >> choice;
} while (choice == 'y'); // 满足条件则重复
💻 代码实战:三步修复祭坛
第 1 步:基础计算功能
#include <iostream>
using namespace std;
int main() {
double a, b; // 支持小数计算
char symbol; // 运算符
cout << "输入算式(如 3 + 5):";
cin >> a >> symbol >> b;
switch (symbol) {
case '+': cout << "= " << a + b; break;
case '-': cout << "= " << a - b; break;
case '*': cout << "= " << a * b; break;
case '/':
if (b != 0) cout << "= " << a / b;
else cout << "⚠️ 除数不能为0!";
break;
default: cout << "未知符文!";
}
return 0;
}
第 2 步:添加循环,持续运转
char choice;
do {
// 将上述计算代码放在这里...
cout << "\n继续计算?(y/n): ";
cin >> choice;
} while (choice == 'y' || choice == 'Y');
cout << "祭坛恢复了光芒!✨";
第 3 步:错误处理升级
case '/':
if (b != 0) {
cout << "= " << a / b;
} else {
- cout << "⚠️ 除数不能为0!";
+ cout << "💥 禁忌!除数0引发爆炸!";
+ return 1; // 直接退出程序
}
break;
💡 知识加油站
- 为什么用
do-while而不是while?
因为祭坛至少需要执行一次计算,再决定是否继续。 - **
break的重要性**:
如果忘记写break,程序会继续执行下一个case,导致符文力量混乱!
💣 挑战任务:记录“计算历史”
目标:让祭坛能保存最近 3 次的计算记录。
实现步骤:
- 定义数组存储历史:
string history[3]; - 每次计算后将算式+结果存入数组(如
"3 + 5 = 8") - 输入
history时打印全部记录
💡 提示:
// 示例:保存到数组
history[0] = "3 + 5 = 8";
// 循环打印时逆序输出(最新记录在前)
for (int i = 2; i >= 0; i--) {
cout << history[i] << endl;
}
📚 练习题:进制转换器
用 switch + 循环 实现十进制转二进制/八进制:
输入:数字 N 和进制 B(2 或 8)
输出:转换后的结果(如输入 10,2 输出 1010)
提示:
- 十进制转 B 进制:不断除以 B 取余数,逆序拼接余数。
- 用
while (N > 0)循环计算余数。 - 处理余数大于9的情况(本题只需处理2/8进制,无需字母)。
// 示例:10转2进制
int N = 10, B = 2;
while (N > 0) {
int remainder = N % B; // 取余数
// 将余数存入数组或字符串(需要逆序)
N = N / B;
}
🚀 下集预告:Level 3 学生成绩统计系统
- 用数组管理全班成绩!
- 编写函数计算平均分、最高分!
- 新挑战:找出“成绩异常”的学生(如低于30分)!
动手试试:
- 在线调试工具:C++ 编辑器
- 遇到问题?在评论区喊“符文修复!”,我会为你输送魔力!
通过本关,你已掌握了 C++ 的多分支选择和循环控制!晒出你的“进制转换器”代码,解锁下一关地图吧! 🔮