计算器支持 四则运算、圆括号;整数、小数、正负号;省略括号间'*'、括号内只有数字
#include<stdio.h>
#include<stdlib.h>
//栈定义
struct Num //数字栈
{
float num[100]; //栈
int top; //栈顶(元素个数)
};
struct Cal //符号栈
{
char cal[100];
int top;
};
//入栈
void InNum(struct Num *n, float num)
{
n->top++;
n->num[n->top] = num;
}
void InCal(struct Cal *c, char cha)
{
c->top++;
c->cal[c->top] = cha;
}
//出栈
float OutNum(struct Num *n)
{
float num = n->num[n->top];
n->top--;
return num;
}
char OutCal(struct Cal *c)
{
char cha = c->cal[c->top];
c->top--;
return cha;
}
//读栈顶
float GetNum(struct Num *n)
{
return n->num[n->top];
}
char GetCal(struct Cal *c)
{
return c->cal[c->top];
}
//初始化双栈
void InitStacks(struct Num *n, struct Cal *c)
{
n->top = -1;
c->top = -1;
}
//输出错误信息 *剩下的错误情况在errofunc()中
int erro(int e)
{
switch (e)
{
case 1:
printf("***ILLEGAL CHARACTORS***\n");
break;
case 2:
printf("***DO NOT ENTER CONSEQUTIVE CALCULATION SYMBOLS***\n");
break;
case 3:
printf("***DO NOT TREAT ZERO AS A DIVISOR!***\n");
break;
case 4:
printf("***PLEASE INPUT SOMETIONG***\n");
break;
case 5:
printf("***BRACKETS DO NOT MATCH EACHOTHERS***\n");
break;
case 6:
printf("***INVALID INPUT***\n");
break;
default:
break;
}
fflush(stdin);
return 1;
}
//获取输入的表达式并进行合法性检查
int GetString(char *str)
{
char c;
int i = 0;
int e = 0;
int b[2] = {0};
printf("PLEASE ENTER THE ARITHMETIC EXPRESSION WITH \nintengers, floats AND '+' '-' '*' '/' '(' ')' \n");
while((c = getchar()) != '\n')
{
str[i] = c;
if(!((c >= '0' && c <= '9') || c == '.' || c == '+' || c == '-' || c == '*' || c ==
C语言实现的四则运算计算器

最低0.47元/天 解锁文章
1669

被折叠的 条评论
为什么被折叠?



