解析简单的算术表达式(第1版)
来源:互联网 发布:mac os 重置 编辑:程序博客网 时间:2024/06/06 03:12
解析简单的算术表达式(不含括号),如:2*12/3+3*9/1-3=
这一版本目前尚未添加对特殊情况的处理,如分母为0的情形、表达式中含有非法字符的情形等。
#include <stdio.h>// 解析只含乘除法的算术表达式//int parse_expr( char * p, char * q ){ int a = 0, b = 0; char op; while( *p >= '0' && *p <= '9' ) { a = a * 10 + ( *p++ - '0' ); } while( p <= q ) { if( *p == '*' || *p == '/' ) { op = *p++; } else if( *p == '+' || *p == '-' ) { break; } b = 0; while( *p >= '0' && *p <= '9' ) { b = b * 10 + ( *p++ - '0' ); } if( op == '*' ) a *= b; else if( op == '/' ) a /= b; } return a;}int main(){ char expr[100] = { '\0' }; char *p = NULL, *q = NULL; char op; int a, b, c; gets( expr ); q = p = expr; while( *q != '\0' && *q != '+' && *q != '-' ) { ++q; } a = parse_expr( p, q - 1 ); p = q + 1; while( 1 ) { op = *q++; while( *q != '+' && *q != '-' && *q != '=' ) { ++q; } b = parse_expr( p, q - 1 ); p = q + 1; if( op == '+' ) a += b; else a -= b; if( *q == '=' ) break; } printf( "%d\n", a ); system( "pause" ); return 0;}int parse_number( char * p, char * q ){ int n = 0; while( p <= q ) { n = n * 10 + ( *p++ - '0' ); } return n;}
0 0
- 解析简单的算术表达式(第1版)
- 简单算术表达式的使用
- (十三)解析算术表达式
- 栈的应用:解析算术表达式
- 栈的应用-解析算术表达式
- 简单算术表达式的求值程序
- 简单的算术运算和表达式
- 用栈解析算术表达式[Python版]
- 解析算术表达式字符串
- 堆栈解析算术表达式
- 堆栈-解析算术表达式
- 解析算术表达式
- 解析算术表达式
- 简单算术表达式求值
- 简单算术表达式求值
- 简单算术表达式求值
- 堆栈解析算术表达式(总结)
- 利用堆栈解析算术表达式
- java的静态成员、静态方法的注意事项!
- iOS 闪光灯的开启和关闭
- JavaScript事件委托
- Android TabHost中使用startActivityForResult无法接收返回值的解决方案
- Game
- 解析简单的算术表达式(第1版)
- 工具篇:Mantle
- 源码篇:Mantle
- Mantle 初步使用
- 我陌轮面前出手
- 黑马程序员(一)Java编程基础
- 灵力巨掌硬碰在
- 令人看不出他的
- 一道清脆稚嫩的