用c语言求计算器程序,C语言-计算器实现(Dev c++编译通过)

本文介绍了使用C语言编写一个计算器程序的方法,包括括号匹配算法、后缀表达式的计算以及中缀表达式转后缀表达式的过程。通过Dev C++编译并通过了测试用例。
摘要由CSDN通过智能技术生成

算法描叙:

-括号匹配

int match(char * cs, int size);

1.做一个空栈。读入字符直到文件尾。

2.对读入的字符进行判断,

2.1如果字符是一个左括号,则入栈;

2.2如果字符是一个右括号,如果栈空或弹出的左括号不匹配,则匹配失败;

2.3输入结束,如果栈非空,则匹配失败,否则匹配成功。

-计算后缀表达式的值(假定后缀表达式正确)

int postfixValue(char * expression, int size);

1.做一个空栈,读入字符直到文件尾。

2.对读入的字符进行判断,

2.1如果是数字,则入栈;

2.2如果是运算符,则弹出两个数字并将计算结果入栈。

3.计算完毕后,最后弹出的值即为最终计算结果。

-中缀表达式转后缀表达式(假定中缀表达式正确)

void convertExpression(char * expression, int size);

1.做一个空栈,读入字符直到文件尾。

2.对读入的字符进行判断,

2.1如果是操作数,则直接输出;

2.2如果是运算符(+-*/)

2.2.1如果栈不空,并且栈顶元素的优先级大于当前运算符优先级,则输出栈中所有优先级大于当前元素的运算符;

2.2.2当前元素入栈;

2.2.3上述四个运算符优先级均大于'('优先级。

2.3如果是运算符'(',则入栈。

2.4如果是运算符')',则出栈所有'('之前的栈元素,'('出栈,但不加入最终表达式。

3.输入完毕后,输出所有剩下的栈元素。

源代码:

#include

#include

#include

#include

#define TRUE 1

#define FALSE 0

#define EmptyTOS (-1)

#define MinStackSize (5)

struct StackRecord;

typedef struct StackRecord *Stack;

typedef char ElementType;

int IsEmpty(Stack S);

int IsFull(Stack S);

Stack CreateStack(int MaxElements);

void DisposeStack(Stack S);

void MakeEmpty(Stack S);

void Push(ElementType X,Stack S);

ElementType Top(Stack S);

void Pop(Stack S);

ElementType TopAndPop(Stack S);

static int left(char c);

static int right(char c);

static int pair(char left, char rig

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值