c语言编程,编一个多功能计算器

能完成简单四则运算,混合运算,乘方,开方,及进制转换... 能完成简单四则运算,混合运算,乘方,开方,及进制转换 展开
 我来答
牵着蚂蚁采蘑菇
2012-05-04
知道答主
回答量:15
采纳率:0%
帮助的人:7.1万
展开全部
#define MAX 100

typedef struct //运算数
{
double a[MAX];
int top;
}OPND;

typedef struct //运算符
{
char a[MAX];
int top;
}OPTR;

void Init_OPND(OPND *s); //初始化运算数栈
void Push_OPND(OPND *s,double x); //push一个运算数
double Pop_OPND(OPND *s); //pop一个运算数
double GetTop_OPND(OPND *s); //取栈顶运算数
void Init_OPTR(OPTR *s); //初始化运算符栈
void Push_OPTR(OPTR *s,char x); //push一个运算符
char Pop_OPTR(OPTR *s); //pop一个运算符
char GetTop_OPTR(OPTR *s); //取栈顶运算符
int IsOpr(char c); //判断输入字符是否为运算符
char Precede(char s,char c); //判断字符的优先级
double Operate(double x,char opr,double y); //计算

void Init_OPND(OPND *s) //初始化运算数栈

{
s->top =-1;
}

void Init_OPTR(OPTR *s) //初始化运算符栈

{
s->top =-1;
}

void Push_OPND(OPND *s,double x) //push一个运算数

{
s->top ++;
s->a [s->top ]=x;
}

void Push_OPTR(OPTR *s,char x) //push一个运算符

{
s->top ++;
s->a [s->top ]=x;
}

double Pop_OPND(OPND *s) //pop一个运算数
{
double x;
x=s->a [s->top];
s->top --;
return x;
}

char Pop_OPTR(OPTR *s) //pop一个运算符

{
char x;
x=s->a [s->top];
s->top --;
return x;
}

double GetTop_OPND(OPND *s) //取栈顶运算数

{
return (s->a[s->top]);
}

char GetTop_OPTR(OPTR *s) //取栈顶运算符

{
return (s->a[s->top]);
}

int IsOpr(char c) //判断输入字符是否为运算符
{
if (c=='+'||c=='-'||c=='*'||c=='/'||c=='('||c==')'||c=='#'||c=='.')
return 1;
else
return 0;
}

char Precede(char s,char c) //判断字符的优先级
{
switch(s)
{
case '+':
case '-':
{
if(c=='+'||c=='-')
return '>';
else if (c=='*'||c=='/')
return '<';
else if(c=='(')
return '<';
else if(c==')')
return '>';
else
return '>';
}
break;

case '*':
case '/':
{
if(c=='+'||c=='-')
return '>';
else if (c=='*'||c=='/')
return '>';
else if(c=='(')
return '<';
else if(c==')')
return '>';
else
return '>';
}
break;

case '(':
{
if(c==')')
return '=';
else
return '<';
}
break;

case ')':
{
return '>';
}
break;

case '#':
{
if(c=='#')
return '=';
else
return '<';

}
break;
}
return 0;
}

double Operate(double x,char opr,double y) //计算
{
double result;
switch (opr)
{
case '+':
result = x + y;
break;
case '-':
result = x - y;
break;
case '*':
result = x * y;
break;
case '/':
result = x / y;
break;
}
return result;
}

参考资料: 这是我自己没事写的,可以运用的

爱我所爱_love
2012-04-29 · TA获得超过301个赞
知道小有建树答主
回答量:260
采纳率:50%
帮助的人:84.3万
展开全部
界面需要吗?
追问
不需要,只要源程序,最后能拿proteus仿真出来就行
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式