当前位置: 首页 > news >正文

C++数组和指针应用实例 -- 实现计算器

C++ 的数组和C 语言一样,C++完全兼容C语言的指针,但是会多出一个this指针

==================================================


用C++实现计算器

case1: 基本实现:

#include <iostream>using namespace std;int add(int a,int b)
{return a+b;
}int minu(int a,int b)
{return a-b;
}int mul(int a,int b)
{return a*b;
}double divs(int a,int b)
{return double(a/b);
}
int main()
{int a,b;double res;char calc;while(1){cout<<"请输入你的两个操作数:a,b"<<endl;cin>>a>>b;cout << "请输入你需要的运算: + - * /" << endl;cin>>calc;switch(calc){case '+':res=add(a,b);break;case '-':res = minu(a,b);break;case '*':res = mul(a,b);break;case '/':res = divs(a,b);break;default:cout<<"运算符输入有误,请重新输入: + - * /"<<endl;break;}cout<<"结果是:"<<res<<endl;}return 0;
}


================================

case 2 : Lambda表达式实现简单函数:

int main()
{int a,b;double res;char calc;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 divs = [](int a,int b)->double{return double(a/b);};while(1){cout<<"请输入你的两个操作数:a,b"<<endl;cin>>a>>b;cout << "请输入你需要的运算: + - * /" << endl;cin>>calc;auto minu = [a,b]()->int{return a-b;};switch(calc){case '+':res=add(a,b);break;case '-':res = minu();break;case '*':res = mul(a,b);break;case '/':res = divs(a,b);break;default:cout<<"运算符输入有误,请重新输入: + - * /"<<endl;break;}cout<<"结果是:"<<res<<endl;}return 0;
}

注意使用 [a,b]   进行参数捕获的时候应该注意a,b是否被赋值,不要拿未赋值的a,b进行捕获


=========================


case3 :  使用回调函数调用lambda 表达式实现:

// 缺陷 -- 计算除法的时候不能进行double 值的返回,我们的 回调函数 指定了返回值为 int

int calculator(int a,int b, int(*p)(int a,int b))
{return  p(a,b);
}int main()
{int a,b;double res;char calc;//    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 divs = [](int a,int b)->double{return (double)a/b;};while(1){cout<<"请输入你的两个操作数:a,b"<<endl;cin>>a>>b;cout << "请输入你需要的运算: + - * /" << endl;cin>>calc;switch(calc){case '+':res= calculator(a,b,[](int a,int b)->int{return a+b;});break;case '-':res = calculator(a,b,[](int a,int b)->int{return a-b;});break;case '*':res = calculator(a,b,[](int a,int b)->int{return a*b;});break;case '/':res = calculator(a,b,[](int a,int b)->int{return a/b;});break;default:cout<<"运算符输入有误,请重新输入: + - * /"<<endl;break;}cout<<"结果是:"<<res<<endl;}return 0;
}


 

http://www.lryc.cn/news/348328.html

相关文章:

  • 【多电压流程 Multivoltage Flow】- 5.特定工具使用建议(6.Formality)
  • 力扣 72. 编辑距离 python AC
  • vue 发布项目
  • springBoot实现发送邮箱验证码 redis缓存源码
  • QT--4
  • 感染了后缀为.360勒索病毒如何应对?数据能够恢复吗?
  • JavaSE多态
  • M 有效算法
  • 知识付费系统制作,托管机构如何提高体验课转化率?要注意什么?
  • 【iOS逆向与安全】网上gw如何自动登录与签到SM2,SM3,SM4算法加解密
  • 《CKA/CKAD应试指南/从docker到kubernetes 完全攻略》学习笔记 第14章 包管理helm v3
  • 蓝桥杯备战.19有奖问答dfs
  • 【JS红宝书学习笔记】第1、2章 初识JS
  • 学习java
  • Redis日常维护流程及技巧:确保稳定性与性能
  • 牛客华为机试题——难度:入门(python实现)
  • 数据结构与算法学习笔记之线性表五---循环链表的表示和实现(C++)
  • 微信小程序生命周期揭秘:从启动到消亡的全过程剖析【附代码】
  • Linux 下载 miniconda
  • 第十五篇:全面防护:构建不容侵犯的数据库安全策略与实战指南
  • 电脑快速搜索文件及文件夹软件——Everything
  • 02-登录页面、动态路由、权限等模块开发
  • 万物生长大会 | 创邻科技再登杭州准独角兽榜单
  • (六)Linux的Shell编程(上)
  • CANopen总线_CANOpen开源协议栈
  • Rust 语言不支持 goto 语句
  • uniapp日期区间选择器
  • k8s job
  • Python---NumPy万字总结【此篇文章内容难度较大,线性代数模块】(3)
  • 【面试经典题】环形链表