/*************************************************************************
功能:利用栈结构做一个简易的计算器
描述:括号为最高优先级,其次乘除为次优先级,加减法的优先级最低
作者:566
**************************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 100
typedef struct stack1 //数据栈
{
float num[MAX];
int top;
}O_NUM;
typedef struct stack2 //符号栈
{
char symbol[MAX];
int top;
}O_SY;
/**********************************************************************
描述:初始化数据栈和符号栈
参数:O_NUM *stacknum,O_SY *stacksymbol
返回值:void
***********************************************************************/
void init_O_NUM(O_NUM *stacknum) //初始化数据栈
{
stacknum->top = -1;
}
void init_O_SY(O_SY *stacksymbol) //初始化符号栈
{
stacksymbol->top = -1;
}
/*************************************************************************
描述:将操作数推进操作数栈中
参数:O_NUM *stacknum,float num
返回值:int
**************************************************************************/
int PUSH_Stacknum(O_NUM *stacknum,float num)
{
if(stacknum->top == MAX-1)
{
printf("已经超过输入长度,输入失败!\n");
return -1;
}
stacknum->top++;
stacknum->num[stacknum->top] = num;
return 0;
}
/*************************
用C实现一个计算器(带小数点和括号以及运算优先级)
最新推荐文章于 2024-06-16 09:32:50 发布
本文介绍如何使用C语言创建一个简易计算器,支持小数点、括号以及运算优先级。通过栈结构处理运算符和操作数,确保正确计算表达式。代码包括数据栈和符号栈的初始化、压栈、弹栈操作,以及运算符优先级判断等功能。
摘要由CSDN通过智能技术生成