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

C++实现简单计算器

本文实例为大家分享了C实现简单计算器的具体代码供大家参考具体内容如下工具stackmap步骤初始化读取字符串去空格负号处理判断为空检查格式计算示例代码123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210#include iostream#include string#include stdio.h#include stack#include map#include math.h#include stdlib.h#include sstreamusingnamespacestd;charop[8][8];mapchar,int m;voidinit(){m[] 1, m[-] 2, m[*] 3, m[/] 4, m[(] 5, m[)] 6, m[#] 7;op[1][1] , op[1][2] , op[1][3] , op[1][4] , op[1][5] , op[1][6] , op[1][7] ;op[2][1] , op[2][2] , op[2][3] , op[2][4] , op[2][5] , op[2][6] , op[2][7] ;op[3][1] , op[3][2] , op[3][3] , op[3][4] , op[3][5] , op[3][6] , op[3][7] ;op[4][1] , op[4][2] , op[4][3] , op[4][4] , op[4][5] , op[4][6] , op[4][7] ;op[5][1] , op[5][2] , op[5][3] , op[5][4] , op[5][5] , op[5][6] ;op[6][1] , op[6][2] , op[6][3] , op[6][4] , op[6][6] , op[6][7] ;op[7][1] , op[7][2] , op[7][3] , op[7][4] , op[7][5] , op[7][7] ;}doubleoperate(doublenum1,charoper,doublenum2){if(oper )returnnum1 num2;if(oper -)returnnum1 - num2;if(oper *)returnnum1 * num2;if(oper /)returnnum1 / num2;}string trim(string str){index 0;if(!str.empty()){while((index str.find( ,index) ! string::nops)str.erase(index,1);}returnstr;}string change(string str){intstart;start #;for(inti 0; i str.length(); i){if(str[i] -){if(i 0 || i ! 0 (m[str[i-1]] 1 m[str[i-1]] 5 str[i1] 0 str[i1] 9){str ;intj i1;start j;while(m[str[j]] 0)j;for(intk str.length() - 1; k j; k--)str[k] str[k-3];str[i] (, str[i1] 0, str[i2] -;intl i3;string s str.substr(start, j - start);for(intk 0; k s.length(); k)str[lk] s[k];str[ls.length()] );}}}str.erase(str.length()-1, 1);returnstr;}booltest(string str){boolifOK true;intflag 0;stackchar s;intstart, e;str #;for(inti 0; i str.length(); i){//判断非法字符if((str[i] 0|| str[i] 9) m[str[i]] 0 str[i] !.)returnfalse;if(str[i] # i! str.length()-1)returnfalse;//判断小数点if(m[str[i]] 0){if(flag 0){start i;flag 1;}}if(m[str[i]] ! 0){if(flag 1){e i;string st str.substr(start, e - start);intpointNum 0;if(st[0] .)returnfalse;for(intj 0; j st.length(); j){if(st[j] .) pointNum;}if(pointNum 1)returnfalse;}flag 0;}//判断运算符if(str[i] || str[i] -|| str[i] *|| str[i] /){if(i 0)returnfalse;if((str[i-1] 0|| str[i-1] 9) str[i-1] !))returnfalse;if((str[i1] 0|| str[i1] 9) str[i1] !()returnfalse;}//判断括号if(str[i] ()s.push(str[i]);if(str[i] )){if(s.empty())returnfalse;charc s.top();if(c ()s.pop();elsereturnfalse;}}//判断括号if(!s.empty())ifOK false;returnifOK;}voidcaculate(string str){str #;intflag 0;intstart, e;stackdouble numStack;//操作数栈stackchar operStack;//运算符栈operStack.push(#);inti 0;while(str[i] !#|| operStack.top() !#){if(m[str[i]] 0){if(flag 0){start i;flag 1;}}else{if(flag 1){e i;//string 转 doublestringstream s (str.substr(start, e - start));doublenum;s num;numStack.push(num);flag 0;}charc operStack.top;if(op[m[c]][m[str[i]]] ){operStack.push(str[i]);i;}elseif(op[m[c]][m[str[i]]] ){operStac.pop();i;}else{charoper operStack.top();operStac.pop();doublenum2 numStack.top();numStack.pop();doublenum1 numStack.top();numStack.pop();doubleresult operate(num1, oper, num2);numStack.push(result);}}}printf(\t\t\t %f\n,numStack.top());}intmain(){init();//初始化printf(\n\n\n\t\t\t请输入表达式 退出请输入end\n);string s;getline(cin, s,\n);//读取字符串s trim(s);//去空格s change(s);//处理负号if(s end){break;}elseif(s.length() 0){//判断为空if(!test(s))//检查格式printf(\t\t\t格式错误\n);elsecaculate(s);//计算}else{printf(\t\t\t输入不能为空\n);}}以上就是本文的全部内容希望对大家的学习有所帮助

相关文章:

C++实现简单计算器

本文实例为大家分享了C实现简单计算器的具体代码,供大家参考,具体内容如下工具stackmap步骤初始化读取字符串去空格负号处理判断为空检查格式计算示例代码1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950…...

Unity游戏实时翻译终极指南:XUnity.AutoTranslator深度技术解析

Unity游戏实时翻译终极指南:XUnity.AutoTranslator深度技术解析 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator 在全球化游戏市场日益繁荣的今天,语言障碍成为玩家体验外语游戏的最…...

[Al+」数智升级,品牌种草营销新范式

AI给各行各业带来的革新有目共睹。在营销工作中,这个命题亦尤为迫切。AI如何嵌入具体场景、解决日常问题?过去一年,千瓜持续投入「AI」产品战略升级,现已覆盖“达人、内容、品牌”三大维度,实现从选人选号、内容创作到…...

脑矿奴隶起义:软件测试从业者的觉醒与革命

在当今数字化浪潮中,软件测试从业者常被戏称为“脑矿奴隶”——一群在代码矿山中日夜劳作的隐形工人,承受着高强度脑力压榨与价值低估。这场“脑矿奴隶起义”,不是历史上的血腥抗争,而是测试工程师们通过专业工具、自动化策略和集…...

Qwen3模型网络故障诊断辅助:图解常见错误与解决方案

Qwen3模型网络故障诊断辅助:图解常见错误与解决方案 网络一断,业务瘫痪。对于运维工程师来说,这可能是最让人心跳加速的时刻。面对屏幕上跳出的错误代码,从海量的日志和复杂的拓扑图中快速定位问题根源,无异于大海捞针…...

2026年小程序商城哪个平台最好?

2026年小程序商城哪个平台最好?小程序商城没有"最好的平台",只有"最匹配业务需求的平台"。选择平台的核心依据是功能匹配度、成本可控性和运营支持能力三者的平衡。从趋势来看,2023-2025年SaaS平台方案占比从约45%增长到…...

2026 AI存储行业迎来关键时刻:英伟达“补课”,华为存储“解题”

文 | 智能相对论作者 | 陈泊丞数十亿建成的万卡GPU集群,实际利用率不足40%。这不是某个智算中心的个例。在过去两年里,中国涌现了大大小小几十个智算中心项目,GPU买了一批又一批,但真正跑满的时候不多。问题不在芯片本身——而在数…...

Swoole+LLM长连接崩了?5个致命错误代码片段+4步热修复流程,现在不看明天宕机

更多请点击: https://intelliparadigm.com 第一章:SwooleLLM长连接崩了?5个致命错误代码片段4步热修复流程,现在不看明天宕机 当 Swoole 的 WebSocket Server 与 LLM 推理服务深度耦合后,长连接看似稳定,实…...

VS Code Copilot Next 工作流配置已进入“智能编排”时代:如何用3个JSON Schema + 1个DSL描述符接管全部重复性编码任务?

更多请点击: https://intelliparadigm.com 第一章:VS Code Copilot Next 工作流配置已进入“智能编排”时代 VS Code Copilot Next 不再仅是代码补全工具,而是演变为可感知上下文、理解任务意图、并自动串联多步骤开发动作的智能工作流引擎…...

git提交代码时,将大写文件改成小写,提交不上去了

主要原因:git add . 没成功把文件加入暂存区文件被 .gitignore 规则忽略了以后永久解决大小写问题git config core.ignorecase false...

环境一致性崩塌预警!Dev Containers 生产部署前必须验证的7项黄金检查项(含自动化校验脚本)

更多请点击: https://intelliparadigm.com 第一章:环境一致性崩塌预警!Dev Containers 生产部署前必须验证的7项黄金检查项(含自动化校验脚本) 当 Dev Containers 从本地开发跃迁至 CI/CD 流水线或预发环境时&#xf…...

构建高效测试反馈循环:从CI/CD到自动化测试的工程实践

1. 项目概述:一个关于测试与循环的探索最近在GitHub上看到一个名为suhuandds/test-pilot-loop的项目,这个标题本身就很有意思。test-pilot-loop,直译过来是“测试-飞行员-循环”,听起来像是一个航空领域的术语,但在软件…...

国产替代之2SK3704与VBMB1615参数对比报告

N沟道功率MOSFET参数对比分析报告一、产品概述2SK3704:三洋(SANYO)N沟道硅MOSFET,耐压60V,导通电阻低,开关速度快(超高速开关),采用4V驱动设计。封装:TO-220M…...

VS Code 远程容器开发环境崩溃实录(附完整日志解码手册):从 Dockerfile 语法错误到 OCI runtime error 的全链路排障指南

更多请点击: https://intelliparadigm.com 第一章:VS Code 远程容器开发环境崩溃现象全景速览 VS Code 的 Remote-Containers 扩展在现代云原生开发中广受青睐,但其稳定性在特定场景下存在显著挑战。开发者常遭遇容器意外退出、Dev Containe…...

BiliTools完整指南:如何轻松下载B站视频与弹幕

BiliTools完整指南:如何轻松下载B站视频与弹幕 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools 还在为下…...

MinIO 国产平替,RustFS 发布 Beta 版本啦

历经 2850 次 Git 提交,99 个 alpha 版本,我们正式发布 RustFS Beta 版。 自从 2025 年 7 月正式开源以来,RustFS 累计获得 26.5k star,1.1k fork,全球贡献者数量超 130 位,DockerHub 镜像拉取次数更是超过…...

保姆级教程:用UE5的Cable组件和PhysicsConstraint做个会晃的吊灯(蓝图版)

用UE5打造逼真物理吊灯:Cable组件与PhysicsConstraint深度实战 在虚幻引擎5的虚拟世界中,物理交互是营造沉浸感的关键要素之一。想象一下中世纪城堡大厅里摇曳的烛光,或是现代loft空间中极具设计感的悬挂灯具——这些场景的核心,往…...

前端性能优化:可访问性优化详解

前端性能优化:可访问性优化详解 为什么可访问性优化如此重要? 在现代Web应用中,可访问性是一个常常被忽视的重要因素。合理的可访问性优化可以确保所有用户(包括残障人士)都能正常使用网站,同时也能提高搜…...

2025届学术党必备的五大AI论文方案解析与推荐

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 当下,主流的AI论文辅助工具,各自有着不同的特点,GPT呢&am…...

WS2812点阵驱动时序调不好?保姆级示波器抓波形与FPGA调试心得分享

WS2812点阵驱动时序调不好?保姆级示波器抓波形与FPGA调试心得分享 第一次接触WS2812点阵时,看着数据手册上那些以纳秒为单位的时间参数,我整个人都是懵的。1180ns、1280ns、300us——这些数字在示波器上看起来就像是在玩一场高精度的电子游戏…...

前端性能优化:构建工具优化详解

前端性能优化:构建工具优化详解 为什么构建工具优化如此重要? 在现代Web开发中,构建工具是前端开发流程的重要组成部分。合理使用构建工具可以显著提高开发效率,优化代码质量,提升页面性能。因此,构建工具优…...

数据库迁移中的索引管理:Blue/Green部署策略

在现代软件开发中,数据库迁移和部署策略对于保证系统的稳定性和可用性至关重要。Blue/Green部署是一种常见的无停机更新方式,它通过在两个独立的环境中分别运行旧版本(Blue)和新版本(Green)应用来实现。今天我们来探讨在这种部署策略下,如何在两个PostgreSQL数据库实例间…...

深入理解NumPy数组切片

引言 在科学计算和数据分析领域,NumPy库无疑是Python中最强大的工具之一。NumPy提供了多维数组对象和大量用于处理数组的函数,其中数组切片(slicing)是经常使用到的功能之一。今天我们将探讨如何在NumPy中对一维数组进行切片操作,并解决一些常见的困惑。 数组切片简介 …...

bitset的数据结构用法

一&#xff0c;bitset本质bitset 定长二进制数组&#xff08;0/1&#xff09; 位运算加速类似&#xff1a;bool a[N];但支持批量位运算&#xff08;64位/128位并行&#xff09;二&#xff0c;定义 & 初始化bitset<1000>b; //全0bitset<1000>b("10…...

Excel VBA:动态隐藏列的技巧

在处理大数据集时,经常会遇到需要从一个包含大量列的表格中,只保留特定列的情况。这种需求在数据分析、报表生成等场景中尤为常见。今天,我将向大家展示如何使用Excel VBA编写一个脚本,确保无论数据文件如何变化,我们都可以动态地隐藏不需要的列,只保留我们需要的那些。 …...

Fast-GitHub终极指南:3个步骤彻底解决GitHub访问难题

Fast-GitHub终极指南&#xff1a;3个步骤彻底解决GitHub访问难题 【免费下载链接】Fast-GitHub 国内Github下载很慢&#xff0c;用上了这个插件后&#xff0c;下载速度嗖嗖嗖的~&#xff01; 项目地址: https://gitcode.com/gh_mirrors/fa/Fast-GitHub 如果你是一位经常…...

急缺大模型开发!年薪96万的新兴领域,强烈建议冲一冲!

本文强调AI大模型技术作为未来五年程序员最佳发展方向&#xff0c;指出华为、美团、阿里等大厂都在积极布局相关岗位&#xff0c;年薪百万成为常态。文章指出&#xff0c;掌握AI大模型技术&#xff0c;特别是Fine-tuning、Agent、RAG等技术&#xff0c;对于开发者的职业发展至关…...

避坑指南:Qt Widgets中paintEvent()重绘的5个常见错误与性能优化

Qt Widgets中paintEvent()重绘的5个常见错误与性能优化实战 在桌面应用开发领域&#xff0c;Qt框架因其跨平台特性和丰富的图形能力而广受欢迎。其中&#xff0c;QPainter作为2D绘图的核心类&#xff0c;承担着界面渲染的重要职责。然而&#xff0c;许多开发者在实现paintEvent…...

3种方法搞定AI定制需求,比Fine-tuning省时省钱100倍!

本文解答了如何根据具体需求定制AI模型的问题。指出通用大模型存在局限&#xff0c;推荐Prompt Engineering、RAG和Fine-tuning三种主流方案。通过类比解释了各方法原理&#xff1a;Prompt Engineering如同优化员工说明书&#xff0c;RAG类似开卷考试动态注入知识&#xff0c;F…...

图像降噪算法调研

免责声明&#xff1a; 1.内容生成说明&#xff1a;本文内容由AI生成&#xff0c;主要用于博主概览、参考、记录学习与工作过程。文章经过初步审核&#xff0c;仅对格式、可读性及基础事实方面做最小限度的辅助调整&#xff0c;未逐一对比审核参考文献&#xff0c;部分表述、逻辑…...