解析加减法运算
如:
输入字符串:"1+2+3" 输出:"6"
输入字符串:"1+2-3" 输出:"0"
输入字符串:"-1+2+3" 输出:"4"
输入字符串:"1" 输出:"1"
输入字符串:"-1" 输出:"-1"
已知条件:输入的运算都是整数运算,且只有加减运算
要求:输出为String类型,不能使用内建的eval()函数
输入描述:
输入字符串:"1+2+3"
输出描述:
输出:"6"
示例1
输入
1+2+3
输出
6
题目不难就是处理比较复杂,最初提交没有考虑到第一个数是负数的情况,AC57%,修改后AC100%
#include<iostream>
#include<cstring>
using namespace std;
int main() {
int a=0, i, b,sum;
bool firs = false;
string str;
cin >> str;
for (i = 0; i < str.length(); i++)
{
if (str.length() > 2)
{
switch (str[i]) {
case '+':b = str[++i] - 48, a += b; firs = false; break;
case '-':
if (i != 0)
{ b = str[++i] - 48, a -= b; }
else {//如果第一位加数是负数
a = 0 - str[++i] + 48;
firs = true;
}
break;
default:
if(!firs)
{
a = str[i] - 48;
if (str[i +1] != '-' && str[i + 1] != '+')
{ (a*= 10) += str[++i] - 48; }
}
else { (a *= 10)-= str[i] - 48; }
break;
}
}
else { cout << str<<endl; return 0; }//如果输入的字符只有两位,那么没有运算,直接输出
}
cout << a;
return 0;
}