递归实现的计算器
2011-11-29 14:55
253 查看
#include "stdio.h" #include "stdlib.h" #include "string.h" #define MX 100 char exp[MX]; int pos; int num(); void error(); int plus(); int add(){ int sum = plus(); char opt; while(pos<(int)strlen(exp)){ opt = exp[pos]; if(opt=='+'){ pos++; sum += plus(); } else if(opt=='-'){ pos++; sum -= plus(); }else break; } return sum; } int plus(){ int sum = num(), t; char opt; while(pos<(int)strlen(exp)){ opt = exp[pos]; if(opt=='*'){ pos ++; sum *= num(); } else if(opt=='/'){ pos++; if((t=num())) sum /= t; else error(); } else break; } return sum; } void error(){ printf("Error!\n"); exit(0); } int num(){ int sum = 0; if(exp[pos]=='('){ pos++; sum = add(); if(exp[pos]!=')') error(); else pos++; return sum; } while(exp[pos]>='0'&&exp[pos]<='9'){ sum *= 10; sum += exp[pos]-'0'; pos++; } return sum; } void main(){ freopen("in.txt", "r", stdin); while(scanf("%s", exp)!=EOF) printf("%d\n", add()); }
相关文章推荐
- JS基于递归实现网页版计算器的方法分析
- 用递归实现阶乘计算器
- C语言递归实现打开5个计算器
- 递归实现阶乘计算器
- 运用递归实现计算器加减乘除带括号优先级算法
- 使用递归下降算法分析数学表达式 -- 基于堆栈的计算器实现算法
- 递归下降方法和LL(1)实现计算器C++
- 4递归实现阶乘计算器 5递归实现TreeView绑定表MenuTree
- 一个使用J2ME技术实现的计算器的代码
- 求两个有序数组的中位数之非递归实现
- 归并排序的代码实现(递归与非递归)
- 链表归并排序的递归与非递归实现
- C#计算器(递归,WebService) 支持加减乘除括号等 (一)
- 二分查找的递归和非递归实现(C++函数模版)
- C++ 递归实现汉诺塔
- php无限极分类递归排序实现方法
- 归并排序 递归和非递归实现
- 递归,迭代,堆栈三种方式实现单链表反转(C++)
- Python 正则表达式实现计算器功能
- 递归是怎么一步步实现的