OJ的第一道题是经典的a+b问题,输入两个数,并输出这两个数的和。
但是你不能仅仅满足于此,我们要增加需求,加需求!!!
不仅仅是a+b,还要继续加上或者减去其他的数,比如1+2+3-2,输出4。
Input
有多组测试数据,每组测试数据包含一行不含有空格的字符串,字符串长度不超过1000,字符串仅包含数字、加号和减号,你可以认为字符串中所有的数都是正整数,数据保证运算合法且在运算时中间结果不超过1000000000。
Output
对于每组测试数据,输出一行运算的结果。
#####Sample Input
1+2
1+2+3-2
3#####Sample Output
3
4
3
题目中给出信息在运算过程中不会出现超过int类范围的结果,并且我们要在读取字符串获得数字的过程中存储对这个数字运算要用的符号。
因为题目为多组输入所以我们在最一开始要用无关字符初始化这个存储运算符号的字符,否则即使你每次运算前重新声明这个字符,它存储的数据也会导致结果运算错误。
代码如下:
#include<iostream>
using namespace std;
int main()
{
string a;
while(cin>>a)
{
int q=0;
char f='.';//一定要初始化
int sum=0;
int flag=0;
for(int i=0;i<a.length();i++)
{
if(a[i]<='9'&&a[i]>='0')
{
q=q*10+a[i]-'0';
}
else
{
if(flag==0)
{
sum+=q;
flag=1;
}
if(f=='+')
sum+=q;
else if(f=='-')
sum-=q;
f=a[i];
q=0;
}
}
if(flag==0)
sum+=q;
if(f=='+')
sum+=q;
else if(f=='-')
sum-=q;
cout<<sum<<endl;
}
return 0;
}