C语言编写的简单计算器程序

这两天在看一个C语言写的计算器程序,做了不少的功夫,跟着作者一步步的进行完善,了解了许多细节性的东西,在此自己做个总结,加深自己对程序的印象,也算是梳理。

在该计算器程序,能进行加减乘除、sin、cos、exp等操作,同时能进行数值保存功能。而该计算器使用逆波兰表示法。即所有运算符都跟在操作数的后面,比如下列表达式:
(1 - 2) * (4 + 5)采用逆波兰表示法表示为:1 2 - 4 5 + *
逆波兰表达法中不需要圆括号,只要知道每个运算符需要几个操作数就不会引起歧义。

计算器程序实现很简单,具体原理如下:

while/* 下一个运算符或操作数不是文件结束指示符 */if/* 是数 *//* 将该数压入到栈中 */
    else if/* 是运算符 *//* 弹出所需数目的操作数 */
        /* 执行运算 */
        /* 将结果压入到栈中 */
    else if/* 是换行符 *//* 弹出并打印栈顶的值 */
    else
        /* 出错 */

在程序设计中,使用模块化思想,getop函数来进行读入,该函数返回一个标识,用来标识读入的是什么类型。主循环体中根据该标识执行相应的动作。

以下是该程序: (我将所有函数和变量放在同一文件)

#include <stdlib.h>
#include <stdio.h>
#include <string.h>

#define MAXOP 100
#define NUMBER '0'   //标识读入的是数字
#define NAME 'n'     //标识读入的是字符串(函数名或非法字符串)
#define ALPHA 26     
int getop(char []);   
void push (double);  //压栈
double pop(void);    //出栈
void clear(void);    //清空栈
void mathfnc(char []);   //执行相应的数学函数sin、cos、exp等

int main(void)
{
    int type;
    int i, var = 0;
    double op1, op2,v;
    char s[MAXOP];
    double variable[ALPHA];

    for (i = 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值