如何用c语言编写可以实现四则运算的计算器

内容:实现一个可以进行整数四则运算的计算器程序。要求用户输入一个由整数组成的四则运算多项式,程序计算出最终结果,并显示给用户。
例如:输入:120-3*45/9+(8-2*5)*4
输出:The answer is :97
定义四个函数:
low():计算优先级最低的表达式,如+,-运算;
mid():计算优先级中等的表达式,如*,/运算;
high():计算优先级最高的表达式,如()运算;
match():对当前的标志进行匹配。
考查点:学习如何运用运算符的优先级和递归设计程序。
我是个计算机菜鸟 希望各位高手多多帮忙啊 我将不胜感激!谢谢了!

#include <stdio.h>#include <stdlib.h>#include <string.h>void resolve(char *p);void del(int n);void find(char *p);int last();char s[80];int num[80];char sign[80]; /*此程序所有数组为全局变量*/int main(){ int n=1; while(n==1) { printf("Enter:\n"); scanf("%s",s); resolve(s); find(sign); /*寻找乘号和除号*/ printf("result= %d\n\n",last()); printf("please Enter:\n1:continue 2:exit\n\n "); scanf("%d",&n); }
return 0;}
void resolve(char *p) /*数字放在NUM中,符号放在SIGN中*/{ int n=0,k=0; while(*p!='\0') { if(*p>='0'&&*p<='9') n=n*10+(*p-'0'); else {
num[k]=n; n=0; sign[k++]=*p; } p++; } num[k]=n;
}
void find(char *p) { int i,n; for(i=0;*p;i++) { if(*p=='*'||*p=='/') { n=(*p=='*' ? num[i]*num[i+1] : num[i]/num[i+1]); num[i]=n; del(i); /*删除其中的乘除号和已经运算过的数字*/ i--; } else p++;
} }

void del(int n){ int i; for(i=n;i<strlen(sign);i++) { sign[i]=sign[i+1]; num[i+1]=num[i+2]; }
}
int last(){ int i,sum; sum=(sign[0]=='+' ? num[0]+num[1] : num[0]-num[1]); for(i=1;sign[i];i++) sum=(sign[i]=='+' ? sum+num[i+1] : sum-num[i+1]); return sum;
}
刚出炉的 没有实现其中的括号功能 也只能处理整数
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-07-05
哎。。。同是天涯沦落人啊。。。。悲剧啊

参考资料:如果您的回答是从其他地方引用,请表明出处