【C++ 小项目系列】多功能计算器
本文介绍了一个C++命令行计算器项目,支持加减乘除四则运算。项目包含输入验证、错误处理(如除零错误)和连续计算功能。文章详细讲解了代码实现步骤:从包含头文件、创建主函数、实现主循环和计算逻辑,到添加继续计算功能。完整代码展示了如何使用switch语句处理不同运算符,以及如何验证用户输入。最后提供了编译运行方法,并建议扩展功能(如幂运算、历史记录等),为后续更复杂的C++项目打下基础。
·
项目介绍
这个系列将带您逐步完成一系列C++小项目,从简单到复杂,每个项目都会讲解核心概念和编程技巧。第一篇我们将创建一个简单的命令行计算器,支持基本的四则运算。
项目功能
- 加法、减法、乘法和除法运算
- 简单的用户界面
- 错误处理(如除零错误)
- 连续计算功能
代码实现
步骤1:包含必要的头文件
#include <iostream>
#include <limits> // 用于清除输入缓冲区
using namespace std;
步骤2:创建主函数和变量
int main() {
char operation;
double num1, num2, result;
char continueCalculation;
cout << "欢迎使用命令行计算器!" << endl;
步骤3:实现主循环
do {
// 获取用户输入
cout << "\n请输入第一个数字: ";
while (!(cin >> num1)) {
cout << "无效输入,请重新输入数字: ";
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), '\n');
}
cout << "请输入运算符 (+, -, *, /): ";
cin >> operation;
cout << "请输入第二个数字: ";
while (!(cin >> num2)) {
cout << "无效输入,请重新输入数字: ";
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), '\n');
}
步骤4:实现计算逻辑
// 根据运算符执行计算
switch (operation) {
case '+':
result = num1 + num2;
break;
case '-':
result = num1 - num2;
break;
case '*':
result = num1 * num2;
break;
case '/':
if (num2 != 0) {
result = num1 / num2;
} else {
cout << "错误: 除数不能为零!" << endl;
continue; // 跳过本次循环的剩余部分
}
break;
default:
cout << "错误: 无效的运算符!" << endl;
continue; // 跳过本次循环的剩余部分
}
// 显示结果
cout << "结果: " << num1 << " " << operation << " " << num2 << " = " << result << endl;
步骤5:添加继续计算功能
// 询问用户是否继续
cout << "\n是否继续计算? (y/n): ";
cin >> continueCalculation;
// 清除输入缓冲区
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), '\n');
} while (continueCalculation == 'y' || continueCalculation == 'Y');
步骤6:结束程序
cout << "感谢使用计算器,再见!" << endl;
return 0;
}
完整代码
#include <iostream>
#include <limits> // 用于清除输入缓冲区
using namespace std;
int main() {
char operation;
double num1, num2, result;
char continueCalculation;
cout << "欢迎使用命令行计算器!" << endl;
do {
// 获取用户输入
cout << "\n请输入第一个数字: ";
while (!(cin >> num1)) {
cout << "无效输入,请重新输入数字: ";
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), '\n');
}
cout << "请输入运算符 (+, -, *, /): ";
cin >> operation;
cout << "请输入第二个数字: ";
while (!(cin >> num2)) {
cout << "无效输入,请重新输入数字: ";
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), '\n');
}
// 根据运算符执行计算
switch (operation) {
case '+':
result = num1 + num2;
break;
case '-':
result = num1 - num2;
break;
case '*':
result = num1 * num2;
break;
case '/':
if (num2 != 0) {
result = num1 / num2;
} else {
cout << "错误: 除数不能为零!" << endl;
continue; // 跳过本次循环的剩余部分
}
break;
default:
cout << "错误: 无效的运算符!" << endl;
continue; // 跳过本次循环的剩余部分
}
// 显示结果
cout << "结果: " << num1 << " " << operation << " " << num2 << " = " << result << endl;
// 询问用户是否继续
cout << "\n是否继续计算? (y/n): ";
cin >> continueCalculation;
// 清除输入缓冲区
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), '\n');
} while (continueCalculation == 'y' || continueCalculation == 'Y');
cout << "感谢使用计算器,再见!" << endl;
return 0;
}
编译和运行
- 将上面的代码保存为
calculator.cpp - 打开终端/命令提示符,导航到文件所在目录
- 使用以下命令编译:
g++ calculator.cpp -o calculator - 运行程序:
./calculator # Linux/Mac calculator.exe # Windows
项目总结
通过这个简单的计算器项目,我们学习了:
- C++的基本输入输出
- 条件语句和循环结构
- 错误处理和输入验证
- 基本的算术运算
扩展挑战
尝试为这个计算器添加以下功能:
- 支持更多运算(如取模、幂运算)
- 实现计算历史记录功能
- 添加括号支持以处理更复杂的表达式
- 创建一个简单的图形用户界面(GUI)
在下一篇文章中,我们将创建一个更复杂的项目:待办事项列表管理器。敬请期待!
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐

所有评论(0)