`

解析字符串算式

 
阅读更多

题目:

通过键盘输入100以内正整数的加、减运算式,请编写一个程序输出运算结果字符串。

输入字符串的格式为:“操作数1 运算符操作数2”,“操作数”与“运算符”之间以一个空格隔开。

补充说明:

1. 操作数为正整数,不需要考虑计算结果溢出的情况。

2. 若输入算式格式错误,输出结果为“0”。

要求实现函数:

void arithmetic(const char *pInputStr, long lInputLen, char*pOutputStr);

【输入】pInputStr: 输入字符串

lInputLen: 输入字符串长度

【输出】pOutputStr: 输出字符串,空间已经开辟好,与输入字符串等长;

【注意】只需要完成该函数功能算法,中间不需要有任何IO 的输入

输出

示例

输入:“4 + 7” 输出:“11”

输入:“4 - 7” 输出:“-3”

输入:“9 ++ 7” 输出:“0” 注:格式错误

 

 

程序:

#include "StdAfx.h"
#include "subStr.h"
#include<iostream>
using namespace std;

void arithmetic(const char *pInputStr,long lInputLen,char * pOutputStr){
	int index=-1;
	int firstNum=0,secondNum=0,baseNum=10;
	char opt;
	if(lInputLen<5)
	{
		printf("invalid parameters\n");
		return;
	}
	//取得第一个操作数
	while(pInputStr[++index]!=' ')   // 这里遇到空格截止
	{
		if(pInputStr[index]>='0' && pInputStr[index]<='9')
		{
			firstNum=(firstNum*baseNum)+(pInputStr[index]-'0');
		}else
		{
			printf("invalid input.\n");
			return;
		}
	}

	//取操作符
	while(pInputStr[++index]!=' ')   //这里遇到空格截止
	{
		if(pInputStr[index+1]!=' ')
		{
			printf("invalid input.\n");
			return;
		}
		if(pInputStr[index]!='+' && pInputStr[index]!='-' && pInputStr[index]!='*' && pInputStr[index]!='/')
		{
			printf("invalid input.\n");
			return;
		}
		opt=pInputStr[index];
	}
	//index++; //移动到最后一个空格.        //这是错的,while循环执行到空格才会停止,这句不需要。
	//取得第二个操作数
	while(pInputStr[++index]!='\0')   //这里遇到\0截止
	{
		if(pInputStr[index]>='0' && pInputStr[index]<='9')
		{
			secondNum=(secondNum*baseNum)+(pInputStr[index]-'0');
		}else
		{
			printf("invalid input.\n");
			return;
		}
	}
	//现在开始计算
	switch(opt)
	{
		case '+':
				printf("%d\n",(firstNum+secondNum));
				break;
		case '-':
				printf("%d\n",(firstNum-secondNum));
				break;
		case '*':
				printf("%d\n",(firstNum*secondNum));
				break;
		case '/':
				printf("%d\n",(firstNum/secondNum));
				break;
		default:
				printf("invalid input.\n");
				return;   
	}
}


int main(){
	
	char *pInputStr=(char *)malloc(20);
	char *pOutputStr=(char *)malloc(20);
	gets(pInputStr);                    //这里不能用scanf("%s",pInputStr);因为这样会以空格结束。
	arithmetic(pInputStr,strlen(pInputStr),pOutputStr);
	system("pause");
	return 0;
}

 

分享到:
评论

相关推荐

    字符串转成算式

    在编程领域,将字符串转换为算式是一项常见的任务,它涉及到解析、运算符优先级以及表达式的求值。这个过程通常分为几个步骤:预处理、分词、语法分析和计算。下面我们将详细讨论这些步骤以及相关的知识点。 1. **...

    VC++中运算表达式字符串解析求值(四则运算,三角和反三角函数等)

    在VC++编程环境中,处理运算表达式字符串是一个常见的任务,特别是在需要动态计算或者解析用户输入时。本主题探讨的是如何实现一个能够解析并求值包含四则运算以及三角和反三角函数的表达式字符串。这样的功能可以...

    字符串表达式解析求值算法

    在编程领域,字符串表达式解析求值算法是一种关键的技术,尤其在计算器应用、脚本语言或者自定义计算逻辑实现中非常常见。这个算法的核心任务是将由字符组成的字符串转换为可执行的数学表达式,同时处理变量和各种...

    Android字符串运算的计算器

    这个计算器应用程序允许用户输入一个完整的数学表达式,如 "2 + 3 * (4 - 5)",然后通过字符串解析和运算来得出结果。以下是一些关于实现这样一个计算器的关键知识点: 1. **字符串解析**:首先,我们需要将用户...

    Python使用正则实现计算字符串算式

    在Python中使用正则表达式计算字符串算式是一个比较高级的编程技巧,通常情况下,Python内置的eval()函数可以很方便地计算字符串表达式的结果。然而,有些情况下,出于安全或者特定需求的考虑,我们可能需要使用正则...

    C#中字符串转换为计算公式-并进行计算的方法(自定义公式的计算)

    ### C#中字符串转换为计算公式并进行计算的方法(自定义公式的计算) 在软件开发过程中,有时我们需要处理用户输入的动态表达式或公式,并能够即时计算这些表达式的值。这种需求常见于科学计算器应用、数学软件或者...

    数值运算字符串转换成数字.zip

    这些库可以提供解析字符串的能力,但你需要确保它们已经在你的数据库环境中正确安装和配置。 5. **字符串操作**:如果字符串格式固定,你可以使用SQL的字符串函数(如SUBSTRING、INSTR等)来分隔字符串,然后逐个...

    test_question_C.rar_字符串

    综上所述,"test_question_C.rar_字符串"作为一个C语言编程资源的集合,涵盖了从基础的字符串操作到复杂的数学表达式解析和矩阵计算的多个方面。通过解决这些问题,开发者不仅能够加深对C语言字符串处理的理解,还能...

    C++实现计算器中的算式解析类+demo演示

    算式解析类的主要职责是将用户输入的字符串表达式转化为可执行的计算操作。在这个过程中,我们需要考虑如何处理不同类型的运算符(如加、减、乘、除)、括号、优先级以及多参数的数学函数。下面我们将深入探讨这些...

    c++,c#可以用的数学算式解析算法(com组件)

    3. **调用解析和计算方法**:找到并调用组件提供的解析和计算方法,传入算式字符串。 4. **处理结果和错误**:接收组件返回的结果,并处理可能出现的错误信息。 在VB.NET中,由于其.NET框架提供了对COM组件更友好的...

    算式计算器编程有源代码

    总之,这个"算式计算器编程有源代码"项目涵盖了VB6.0的基础知识、字符串处理、数学表达式解析和事件驱动编程等多个方面,是初学者学习编程和提升技能的好资源。通过研究和理解源代码,不仅可以掌握计算器的实现方法...

    计算string类型算式的结果

    总的来说,计算字符串类型算式的结果涉及到字符串处理、运算符优先级、数据结构(栈)的运用以及异常处理等多个编程知识点。在实际开发中,这样的功能可以应用于各种需要动态计算的场景,如用户输入的简单计算请求。...

    c语言实例解析—常见试题解答篇

    172 删除字符串中的特定字符 173 求解符号方程 174 计算标准差 175 求取符合特定要求的素数 176 统计符合特定条件的数 177 字符串倒置 178 部分排序 179 产品销售记录处理 180 特定要求的字符编码 181 求解...

    词法分析(分析一个算式的数和运算符)

    在本例中,词法分析器的任务是将一个包含数字与运算符的算式字符串分割成若干个单独的Token,其中数字部分以十六进制形式输出,运算符则以英文形式表示。 #### 实现细节 ##### 数据结构定义 为了处理输入的字符串...

    Python 70行代码实现简单算式计算器解析

    总的来说,这个70行代码的简单算式计算器解析器展示了如何利用Python的字符串处理和正则表达式来解析和计算数学表达式。这种方法虽然比使用`eval`简单且可控,但对于更复杂的表达式(如带有嵌套括号和更复杂的运算符...

    java正则实现解析算术表达式 (仅限+-*/和括号)

    java正则实现解析算术表达式 (仅限+-*/和括号)

    火柴棍算式游戏

    例如,可以使用字符串存储算式,然后解析这些字符串以获取数字和运算符。接着,你需要实现算法来检查原始算式是否成立,并找出可以通过移动一根火柴使其成立的解决方案。这可能涉及到对数字的二进制表示的理解,因为...

    蓝桥杯学习资料大全-题目参考代码-算式填符号.zip

    3. **字符串处理**:在编程中,你需要用到字符串操作来构建和解析算式。熟悉字符串的拼接、查找、替换等方法。 4. **回溯法**:对于填符号问题,回溯法是一种常用的解题策略。在尝试每个可能的符号位置时,如果发现...

    android计算器源码,可以实现算式检查

    总的来说,这个"android计算器源码"项目涵盖了Android开发的多个核心技能,如UI设计、事件处理、字符串解析、数学逻辑等。通过学习和研究这个项目,开发者可以深入理解Android应用的开发流程,并提升处理复杂逻辑...

    C# 计算器(支持算式输入)

    3. **表达式解析**:为了计算用户输入的算式,我们需要编写一个解析器来理解输入的字符串。这可能涉及到正则表达式用于识别数字和运算符,或者使用更复杂的词法分析和语法分析技术。 4. **错误处理**:高容错性意味...

Global site tag (gtag.js) - Google Analytics