速算,简易计算器c语言代码,可实现加减乘除
#include"stdio.h"
#include"math.h"
#include"stdlib.h"
struct optrstyle
{
int top;
char stack[20];
}
struct opndstyle
{
int top;
int stack[20];
}
void main()
{
char ch;
while(1)
{
printf("-----------------------------------------\n");
printf("|-----------欢迎来到速算24--------------|\n");
printf("|----------是否开始游戏?????------------|\n");
printf("|--------- 开始游戏请按'Y'-------------|\n");
printf("|--------- 退出游戏请按其他键-------------|\n");
printf("-----------------------------------------\n");
scanf("%c",&ch);
if(ch=='Y' or ch=='y')
{
}
else
break;
}
}
int EvaluateExpression()
{
// 算术表达式求值的算符优先算法。设 OPTR 和 OPND 分别为运算符栈和运算数栈,OP 为运算符集合。
InitStack(OPTR);
Push(OPTR,'#');
InitStack(OPND);
c = getchar();
while(c!='#' || GetTop(OPTR)!='#')
{
if(!In(c,OP))
{
Push((OPND,c);
c = getchar();
} // 不是运算符则进栈
else
switch(Precede(GetTop(OPTR),c))
{
case '
Push(OPTR,c);
c = getchar();
break;
case '=': // 脱括号并接收下一字符
Pop(OPTR,x); c = getchar();
break;
case '>': // 退栈并将运算结果入栈
Pop(OPTR,theta);
Pop(OPND,b);
Pop(OPND,a);
Push(OPND,Operate(a,theta,b));
break;
}// switch
}// while
return GetTop(OPND);
}// EvaluateExpression
int changecard( char a[])
{
if()
}
void InitStack(Stack &S)
{
S.top=-1;
}
int Pop1(Stack &S)
{
if(S.top==-1)
{
printf("stack is empty!");
exit (1);
}
ElemType temp=S.stack[S.top];
S.top--;
return temp;
}
int GetTop1(Stack &S)
{
if(S.top==-1)
{
printf("stack is empty!");
exit (1);
}
return S.stack[S.top];
}
char Pop2(Stack &S)
{
if(S.top==-1)
{
printf("stack is empty!");
exit (1);
}
ElemType temp=S.stack[S.top];
S.top--;
return temp;
}
char GetTop2(Stack &S)
{
if(S.top==-1)
{
printf("stack is empty!");
exit (1);