1. 基本语法
变量声明: bool running = true;
数据类型: double, char, bool
运算符: +, -, *, /, %, = 等
控制流: while循环, switch分支, if条件
函数: 函数声明与定义、参数传递、返回值
2. 函数封装
加法函数: double add(double a, double b)
减法函数: double subtract(double a, double b)
乘法函数: double multiply(double a, double b)
除法函数: double divide(double a, double b)
菜单显示: void displayMenu()
结果显示: void displayResult(double num1, double num2, char op, double result)
每个函数专注于单一功能,体现了模块化编程思想。
3. 错误处理
try {
result = divide(num1, num2);
} catch (const std::runtime_error& e) {
std::cerr << "错误: " << e.what() << std::endl;
}
除法函数中检查除零错误:
if (b == 0) {
throw std::runtime_error("除数不能为零!");
}
使用异常处理机制捕获并处理错误。
4. 输入输出处理
使用 std::cin 和 std::cout 进行输入输出
菜单系统:清晰的用户界面
输入缓冲区清理:std::cin.ignore(10000, '\n') 防止残留输入影响后续操作
5. 基本程序结构
#include指令:包含必要的头文件
函数原型声明
main()函数作为程序入口
逻辑清晰的程序流程控制
源代码:
#include <iostream>
#include <string>
#include <stdexcept>
// 函数声明
double add(double a, double b);
double subtract(double a, double b);
double multiply(double a, double b);
double divide(double a, double b);
void displayResult(double num1, double num2, char op, double result);
void displayMenu();
int main() {
// 控制程序运行的主循环
bool running = true;
// 用户输入选项
char choice;
while (running) {
// 显示计算器菜单
displayMenu();
// 获取用户输入
std::cin >> choice;
// 处理用户选择
switch (choice) {
case '1':
case '2':
case '3':
case '4': {
// 获取操作数
double num1, num2;
std::cout << "请输入第一个数字: ";
std::cin >> num1;
std::cout << "请输入第二个数字: ";
std::cin >> num2;
// 执行计算
double result;
try {
switch (choice) {
case '1':
result = add(num1, num2);
displayResult(num1, num2, '+', result);
break;
case '2':
result = subtract(num1, num2);
displayResult(num1, num2, '-', result);
break;
case '3':
result = multiply(num1, num2);
displayResult(num1, num2, '*', result);
break;
case '4':
result = divide(num1, num2);
displayResult(num1, num2, '/', result);
break;
}
}
catch (const std::runtime_error& e) {
std::cerr << "错误: " << e.what() << std::endl;
}
break;
}
case '5': // 退出程序
running = false;
std::cout << "谢谢使用简易计算器!" << std::endl;
break;
default:
std::cout << "无效的选择,请重新输入!" << std::endl;
break;
}
// 清除输入缓冲区
std::cin.ignore(10000, '\n'); // 忽略最多10000个字符,直到遇到换行符
}
return 0;
}
// 函数定义
void displayMenu() {
std::cout << "\n===== 简易计算器 =====" << std::endl;
std::cout << "1. 加法 (+)" << std::endl;
std::cout << "2. 减法 (-)" << std::endl;
std::cout << "3. 乘法 (*)" << std::endl;
std::cout << "4. 除法 (/)" << std::endl;
std::cout << "5. 退出" << std::endl;
std::cout << "请选择操作(1-5): ";
}
// 加法函数
double add(double a, double b) {
return a + b;
}
// 减法函数
double subtract(double a, double b) {
return a - b;
}
// 乘法函数
double multiply(double a, double b) {
return a * b;
}
// 除法函数(带除零错误检查)
double divide(double a, double b) {
if (b == 0) {
throw std::runtime_error("除数不能为零!");
}
return a / b;
}
// 显示计算结果
void displayResult(double num1, double num2, char op, double result) {
std::cout << "\n计算结果: " << num1 << " " << op << " " << num2 << " = " << result << std::endl;
}