计算器第二版:C语言,VC++6.0

这个博客介绍了一种使用C语言和VC++6.0开发的简易计算器,通过栈来处理前缀表达式,实现了数字和运算符的分类、运算符优先级判断以及计算过程。程序能够处理包括括号在内的单层运算表达式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用栈实现,前缀表达式变后缀表达式的原理,但是没有转换,是边转换边实现:

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




#define MAX_SIZE 50


char num[MAX_SIZE];


//定义数据栈类型
typedef struct  data
{
    float stack[MAX_SIZE];
    int top;
}SD;


//定义运算符栈类型
typedef struct  symbol
{
    char stack[MAX_SIZE];
    int top;
}SS;


//子函数声明
void allocate(char num[], SD *Data, SS *Symb); //数和运算符分类
void check(char c,SD *Data,SS *Symb);//运算符分类处理
int  isPra(char c);//判断是括号
int  getPri(char c); //计算优先级 
void calculate(SD *Data,SS *Symb);//计算栈顶元素
//void symbol(char c,SD *Data,SS *Symb);//c是运算符
//主函数


void main()
{
SD stackData;//定义数据栈
SS stackSymb;//定义运算符栈
stackData.top=-1;//清空数据栈
stackSymb.top=-1;//清空运算符栈


//输入计算公式
    printf("*******************************C语言简易计算器******************************\n");
//printf("********************请正确输入计算公式,按回车键结束**********************\n");
//printf("支持单层或嵌套括号运算如:2*(2+3-(6-5))/2,不支持并列括号如:2*(2+3)-(6-5)/2\n");
    scanf("%s",&num);//接收输入的公式以字符串形式


//数据分类,数字运算符分类存储
allocate(num, &stackData, &stackSymb);
printf("=%f\n",stackData.stack[stackData.top]);//输出结果
}


void allocate(char num[], SD *Data, SS *Symb)
{
char   tnsarr[30]="0";//存放数字字符的临时字符串数组
    int  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值