简易计算器实现:加减乘除无括号运算
4星 · 超过85%的资源 需积分: 35 150 浏览量
更新于2024-09-14
2
收藏 190KB PPTX 举报
"这是一个关于实现一个简单计算器的程序设计,该计算器能够处理基本的加减乘除运算,但不支持括号表达式。程序通过读取用户输入的字符流,将字符转换为整数,并存储在数组中,然后根据运算符执行相应的计算操作。"
在编程实现一个简单的计算器时,主要涉及以下几个关键知识点:
1. **字符输入与处理**:
- 使用`getchar()`函数从标准输入流中读取单个字符,这个过程可以不断进行直到遇到等于号`=`,表示输入结束。
- 定义`char`数组`a[i]`来存储输入的字符,例如'1'、'4'、'*'、'4'、'+'、'7'、'='。
2. **ASCII码转换**:
- `ASCII码中’0’与0相差48`,所以为了将字符形式的数字转换为整数,可以使用`B[i]=a[i]-48`。例如,字符'1'对应的ASCII码是49,减去48后得到整数1。
3. **数组分配与数据结构**:
- 定义`int`数组`b[i]`来存储转换后的数字,如1447。
- 定义`char`数组`c[i]`来存储运算符,如'*'、'+'、'=',并存储在奇数索引位置。
- 定义`int`数组`d[i]`来存储计算过程中的中间结果,如14、47。
4. **运算符处理**:
- 检索符号数组`c[i]`,优先处理乘法`*`和除法`/`,因为它们的优先级高于加法`+`和减法`-`。
- 执行相应的计算操作,例如,14乘以4得到56,然后将结果存储在`d[i]`中。
- 如果没有乘法或除法,再处理加法和减法,例如,56加上7得到63。
5. **计算数的权值**:
- 可能需要使用`change[m]`数组来储存计算数的权值,以便在进行乘法和除法运算时调整计算位置。
6. **值的前移**:
- 在进行运算后,可能需要将`d[i]`和`c[i]`中的值前移,以腾出位置存放新的计算结果。
7. **输出结果**:
- 最终,检索没有加号`+`和减号`-`的运算后,输出`d[0]`作为计算结果。
8. **主函数`main()`**:
- 在`main()`函数中,用循环读取字符,遇到等号`=`时停止。
- 通过遍历输入的字符,处理数字和运算符,最终得出计算结果。
9. **变量的使用**:
- 各种变量如`i`, `temp`, `j`, `k`, `c`, `h`, `g`, `f`, `p`, `TRANSFROM`, `s`等用于控制流程和存储临时数据。
以上就是构建一个简单计算器程序的核心步骤和涉及的编程技术,主要运用了字符处理、数组操作、条件判断以及基本算术运算。注意,这个实现不包含错误处理和复杂表达式的解析,仅适用于基础的数学计算。
2018-03-27 上传
2018-12-20 上传
2021-01-21 上传
2011-05-31 上传
176 浏览量
2018-12-30 上传
124 浏览量
2011-06-20 上传
2019-08-07 上传
solarcreeper
- 粉丝: 3
- 资源: 12
最新资源
- 消火栓检测数据集+1700数据
- 基于JavaWeb的学生实习管理系统【项目源码+数据库脚本】(毕设)
- DnNearestLinkFinder:查找属于图形的最近点
- funbox_reactapp:测试
- GGGsensor,java论坛源码,第三方支付源码java
- [常熟]高层住宅规划设计文本PDF2020
- 基于ssm+vue+J2EE开发的猎头公司管理系统.zip
- 博卡打印机驱动 博卡打印机驱动
- STM32F429 FreeRTOS实战:实现FreeRTOS任务创建和删除(静态方法)【支持STM32F42X系列单片机】
- udemy-star-db:单页应用程序,演示有关StarWars实体的所有信息
- ConsoleShell:NET的控制台外壳
- ingoresearch-org:ingoresearch.org的代码
- 充电引导,matlab 论文和源码,matlab源码之家
- freeswitch-rayo-cookbook:Chef Cookbook 安装专门配置为 Rayo 服务器的 FreeSWITCH
- 安卓Android源码——TabActivityDemo.zip
- ext.less-compiler