欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 家装 > qt中写一个简易的计算器

qt中写一个简易的计算器

2025/4/29 4:29:50 来源:https://blog.csdn.net/dsafefvf/article/details/147516512  浏览:    关键词:qt中写一个简易的计算器

以下是添加了详细代码注释的版本:

```cpp
#include <iostream>using namespace std;定义加法函数(已注释掉)
//int add(int a, int b) {
//    return a + b;
//}定义减法函数(已注释掉)
//int min(int a, int b) {
//    return a - b;
//}定义乘法函数(已注释掉)
//int mul(int a, int b) {
//    return a * b;
//}定义除法函数(已注释掉)
//double diliv(int a, int b) {
//    if (b == 0) { // 检查除数是否为零
//        cout << "错误:除数不能为零!" << endl;
//        return 0; // 返回 0 表示错误
//    }
//    return (double)a / b; // 返回浮点数结果
//}// 定义一个通用的计算器函数,接受两个整数和一个函数指针作为参数
int calculator(int a, int b, int(*p)(int a, int b)) {cout << "开始计算" << endl;// 这里可以调用传入的函数指针进行计算// 示例:return p(a, b);
}int main() {int a = 0; // 第一个操作数int b = 0; // 第二个操作数char cal; // 用户输入的运算符string continueChoice; // 用户选择是否继续的标志// 使用 Lambda 表达式定义加法、减法、乘法和除法操作auto add = [](int a, int b)->int { return a + b; }; // 加法auto minu = [](int a, int b)->int { return a - b; }; // 减法auto mul = [](int a, int b)->int { return a * b; }; // 乘法auto diliv = [](int a, int b)->double { if (b == 0) { // 检查除数是否为零cout << "错误:除数不能为零!" << endl;return 0; // 返回 0 表示错误}return (double)a / b; // 返回浮点数结果};while (true) { // 无限循环,直到用户选择退出// 获取用户输入的两个数字cout << "请输入两个数:" << endl;cin >> a;cin >> b;// 获取用户输入的运算符cout << "请输入运算符 (+, -, *, /):" << endl;cin >> cal;// 根据用户输入的运算符执行相应的计算switch (cal) {case '+': // 加法cout << "结果: " << add(a, b) << endl; // 调用 Lambda 表达式的加法函数break;case '-': // 减法cout << "结果: " << minu(a, b) << endl; // 调用 Lambda 表达式的减法函数break;case '*': // 乘法cout << "结果: " << mul(a, b) << endl; // 调用 Lambda 表达式的乘法函数break;case '/': // 除法cout << "结果: " << diliv(a, b) << endl; // 调用 Lambda 表达式的除法函数break;default: // 无效运算符cout << "无效的运算符!" << endl;break;}// 询问用户是否继续计算cout << "是否继续计算?(y/n): ";cin >> continueChoice;// 如果用户输入的不是 'y' 或 'Y',则退出循环if (continueChoice != "y" && continueChoice != "Y") {break; // 退出循环}}cout << "程序已退出。" << endl; // 提示程序结束return 0; // 返回 0 表示程序正常结束
}
```

### **代码注释说明**

1. **函数定义部分**:
   - 被注释掉的函数(如 `add`, `min`, `mul`, `diliv`)是传统方式定义的函数。
   - 通过 Lambda 表达式重新实现了这些功能,使代码更加简洁。

2. **Lambda 表达式**:
   - Lambda 表达式是一种匿名函数,可以直接在需要的地方定义并使用。
   - 例如,`auto add = [](int a, int b)->int { return a + b; };` 定义了一个加法操作。

3. **主循环**:
   - 使用 `while (true)` 实现无限循环,直到用户选择退出。
   - 在每次循环中,获取用户输入的两个数字和运算符,并根据运算符执行相应的计算。

4. **错误处理**:
   - 在除法操作中,检查除数是否为零,避免程序崩溃。
   - 如果用户输入无效运算符,提示“无效的运算符!”。

5. **用户交互**:
   - 每次计算结束后,询问用户是否继续。
   - 如果用户输入 `n` 或 `N`,程序会退出循环并结束运行。

6. **退出机制**:
   - 通过 `break` 语句跳出循环,实现程序的优雅退出。

---

### **总结**

这段代码通过 Lambda 表达式简化了函数定义,并提供了清晰的用户交互逻辑。代码注释详细地解释了每个部分的功能,方便阅读和维护。如果你还有其他问题或需要进一步优化,请随时提问!

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词