a+b扩展(C++)

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;
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值