运算字符串解析(c语言)

运算字符的解析,如:43+表示:4+3, 25* 表示:2*5, 25*1+表示(2*5)+1,435/+表示:4 +(3/5)


 1 #include <stdio.h>
2 #include <stdbool.h>
3 #include <string.h>
4
5 bool isNumber(const char *c);
6 int getNumber(const char *c);
7 bool isOperator(const char *c);
8 float calculate(char *string, int len);
9
10 int main(int argc, const char * argv[])
11 {
12
13 // insert code here...
14 printf("Begin>>\n");
15 printf("%d",‘0‘);
16 printf("%d\n",‘/‘);
17 char string[100] = "435/+";
18 size_t len = strlen(string);
19 float ret = calculate(string, (int)len);
20 printf("result = %f\n", ret);
21 return 0;
22 }
23
24 bool isNumber(const char *c)
25 {
26 if ( (int)(*c) >= (int)(‘0‘) && (int)(*c) <= (int)(‘9‘)) {
27 return true;
28 }
29 return false;
30 }
31
32 int getNumber(const char *c)
33 {
34 bool isN = isNumber(c);
35 if (isN) {
36 int n = (int)((*c) - (int)‘0‘);
37 return n;
38 }else {
39 return 0;
40 }
41 }
42
43 bool isOperator(const char *c)
44 {
45 if ((int)(*c) == (int)‘+‘ || (int)(*c) == (int)‘-‘ || (int)(*c) == (int)(‘*‘) || (int)(*c) == (int)(‘/‘) ) {
46 return true;
47 } else {
48 return false;
49 }
50
51 }
52
53 float calculate(char *string, int len)
54 {
55 if (len == 1) {
56 return (float)getNumber(string);
57 }
58
59 if (len == 2) {
60 printf("error!");
61 }
62
63 if (!isOperator(string + len - 1)) {
64 return 0.0f;
65 }
66
67 float a = 0.0f;
68 float b = 0.0f;
69 if (isOperator(string + len - 1 -1)) {
70 a = (float)getNumber(string);
71 b = calculate(string + 1, len - 2);
72 } else {
73 a = calculate(string, len - 2);
74 b = (float)getNumber(string + len - 1 - 1);
75 }
76
77 char operator = *(string + len - 1);
78 if ((int)operator == (int)‘+‘) {
79 return (a + b);
80 } else if ((int)operator == (int)‘-‘) {
81 return (a - b);
82 } else if ((int)operator == (int)‘*‘) {
83 return (a * b);
84 } else if ((int)operator == (int)‘/‘) {
85 return (a / b);
86 } else {
87 return 0.0f;
88 }
89
90 }

时间: 2024-10-07 07:43:23

运算字符串解析(c语言)的相关文章

C语言 多次运算字符串,输出结果(不容易啊,调了1个多小时,才调整出来。。。。)!希望大神们有更好的办法,能够指点一二

//输入一个多次运算字符串,输出结果,只支持四则运算,只支持整数. //解析字符串运算(无括号状态下) int calculatorFinal(char *str) { //jieGuo[100][10]用于存放解析出来的数组 char *p[100], jieGuo[100][10]; int result, secondNumber, i = 0, j = 0; char tempNumber[20], op; for (i = 0; i < 100; i++) { p[i] = jieGu

基于开源库jsoncpp的json字符串解析

json(JavaScript Object Notation)是一种轻量级高效数据交换格式.相比于XML,其更加简洁,解析更加方便.在实习期间,我负责的程序模块,多次使用到json进行数据传输.由于之前只对json稍稍了解,而且不熟悉项目组使用的开源json解析库,故在编码过程中效率很低,而且还出现过bug.虽然,最后项目组的事情比较顺利的完成了,但感觉自己对json的编解码熟悉仍然不够,故翻阅了相关文档,写下这篇技术博客.与君共勉. 1.什么是json JSON(JavaScript Obj

XML字符串解析实体类方法

/// <summary> /// XML字符串解析实体类方法 /// </summary> public class StringXML { public StringXML() { } public StringXML(string ver, string node) { this.version = int.Parse(ver); this.nodeText = int.Parse(node); } /// <summary> /// XML版本号 /// <

xml字符串解析

//解析xml字符串 public void readStringXml(String xml) { Document doc=null; try { //将字符转化为XML doc=DocumentHelper.parseText(xml); //获取根节点 Element rootElt=doc.getRootElement(); //拿到根节点的名称 //System.out.println("根节点名称:"+rootElt.getName()); //获取根节点下的子节点的值

将json格式的字符串解析成Map对象

/** * 将json格式的字符串解析成Map对象 <li> * json格式:{"name":"admin","retries":"3fff","testname" * :"ddd","testretries":"fffffffff"} */ private static HashMap<String, String> t

JS中将JSON的字符串解析成JSON数据格式《转》

在JS中将JSON的字符串解析成JSON数据格式,一般有两种方式: 1.一种为使用eval()函数. 2. 使用Function对象来进行返回解析. 使用eval函数来解析,并且使用jquery的each方法来遍历 用jquery解析JSON数据的方法,作为jquery异步请求的传输对象,jquery请求后返回的结果是json对象,这里考虑的都是服务器返回JSON形式的字符串的形式,对于利用JSONObject等插件封装的JSON对象,与此亦是大同小异,这里不再做说明. 这里首先给出JSON字符

反转字符串(c语言)

简单的反转字符串实现 #include <stdio.h> #include "string.h" void exchange(char *string, int c1, int c2); void revertString(char *string, int iStart, int iEnd); int main(int argc, const char * argv[]) { // insert code here... printf("Begin>&g

同事总结的hivesql优化Hive是将符合SQL语法的字符串解析生成可以在Hadoop上执行的M

同事总结的hive sql 优化 Hive是将符合SQL语法的字符串解析生成可以在Hadoop上执行的MapReduce的工具. 使用Hive尽量按照分布式计算的一些特点来设计sql,和传统关系型数据库有区别, 所以需要去掉原有关系型数据库下开发的一些固有思维. 基本原则: 1:尽量尽早地过滤数据,减少每个阶段的数据量,对于分区表要加分区,同时只选择需要使用到的字段 select ... from A join B on A.key = B.key where A.userid>10 and B

VBScript把json字符串解析成json对象的2个方法

这篇文章主要介绍了VBScript把json字符串解析成json对象的2个方法,本文通过MSScriptControl.ScriptControl和jscript实现,需要的朋友可以参考下 asp/vbscript将json字符解析为json对象的方法,如果asp使用jscript来编写服务器端代码操作json字符串就简单了,vbscript需要MSScriptControl.ScriptControl或者服务器端的jscript来作为中间体才行. vbscript将json字符解析为json对