OJ 系列之100以内正整数的加、减运算式

<pre name="code" class="cpp">// Arithmetic.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <string.h>
#include <stdio.h>
/*
通过键盘输入100以内正整数的加、减运算式,请编写一个程序输出运算结果字符串。
输入字符串的格式为:“操作数1 运算符 操作数2”,“操作数”与“运算符”之间以一个空格隔开。

补充说明:
1、操作数为正整数,不需要考虑计算结果溢出的情况。
2、若输入算式格式错误,输出结果为“0”。

要求实现函数: 
void arithmetic(const char *pInputStr, long lInputLen);

【输入】 pInputStr:  输入字符串
		 lInputLen:  输入字符串长度         

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

示例 
输入:“4 + 7”  输出:“11”
输入:“4 - 7”  输出:“-3”
输入:“9 ++ 7”  输出:“0” 注:格式错误
*/
/*
* Function:arithmetic
* Usage:void arithmetic(const char *pInputStr, long lInputLen)
* -----------------------------------------------------
*/
void arithmetic(const char *pInputStr, long lInputLen)
{
	if (lInputLen<=0)
	{
		return ;
	}
	char AddOrSub[2] = {'+','-'};
	long i;
	long opera1,opera2;
	char temp;
	opera1 = opera2 = 0;

	for (i=0;i<lInputLen;i++)  //先取第一个操作数
	{
		if (pInputStr[i]>'9'||pInputStr[i]<'0')
		{
			return ;
		}
		if (pInputStr[i] ==' ') //碰到空格就跳出来
		{
			break;
		}		
		opera1 =opera1*10 + pInputStr[i]-'0';
		
	}
	temp = pInputStr[i+1]; //运算符
	if(pInputStr[i+2]==AddOrSub[0]|| pInputStr[i+2]==AddOrSub[1])
	{
		printf("%d\n",0);
		return;  //格式错误
	}
	i = i+3; //跳到第一个空格后第3个数开始取

	while(i<lInputLen)  //先取第一个操作数
	{
		if (pInputStr[i]>'9'||pInputStr[i]<'0')
		{
			return ;
		}
		opera2 =opera2*10 + pInputStr[i]-'0';
		i ++;
		
	}
	int sum = 0;

	switch(temp)
	{
	case '+':
		sum = opera1 + opera2;
		printf("%d\n",sum);
		break;
	case '-':
		sum = opera1 - opera2;
		printf("%d\n",sum);
		break;
	default:
		return;
	}
}


int _tmain(int argc, _TCHAR* argv[])
{
	char pInputStr[1024];
	gets(pInputStr);
	long lInputLen = strlen(pInputStr);
	arithmetic(pInputStr, lInputLen);
	getchar();
	return 0;
}


 

你可能感兴趣的:(C++,华为机试)