蓝桥杯c++算法训练 字符串表达式

资源限制
时间限制:1.0s 内存限制:256.0MB
问题描述
  编写程序,在程序中实现字符串表达式求解函数int expression(char* s)。程序输入为一个字符串表达式,输出为该函数返回的结果。输入的表达式中只包含加法和减法,以等号‘=’结束,长度不超过100,并且最少有一项,所有运算均在整数范围之内。
样例输入
2+2345+913-3=
样例输出
3257

#include<iostream>
#include<stdlib.h>
using namespace std;
int main()
{
	string s,c,d;
	cin>>s;
	int a,b,g=0,one=0,two=0,j=0,sum=0;
	a=s.size();//字符串长度 
	b=s[0];
	int all[2];//定义一个可存放数据的数组 
	for(int k=0;k<2;k++)//数组清零 
	{
		all[k]=0;
	}
	for(int z=0;z<a;z++)//把第一组数字存进数组 
	{	
			if(s[z]!='+'&&s[z]!='-'&&s[z]!='=')
			{
				c=s[z];
				b=atoi(c.c_str());//string类型转int类型 
				sum=sum*10+b;
				all[0]=sum;
			}
			else
			{
				j=z;//标记'+'或'-'的位置 
				break;
			} 		
	}
	g=j+1;//'+'或'-'的位置的下一位 
	while(j!=0)
	{
		sum=0;
		for(int i=g;i<a;i++)//下一组数字 
		{
			if(s[i]!='+'&&s[i]!='-'&&s[i]!='=')
			{
				c=s[i];
				b=atoi(c.c_str());
				sum=sum*10+b;
				all[1]=sum;
			}
			else
			{
				g=i+1;//标记'+'或'-'的下一位 
				break;	
			}
			
		}
		if(s[j]=='+')
		{
			j=g-1;//更新'+'的位置 
			one=all[0];
			two=all[1];
			all[0]=one+two;
		}
		else if(s[j]=='-')
		{
			j=g-1;//更新'-'的位置 
			one=all[0];
			two=all[1];
			all[0]=one-two;
		}
		else if(s[j]=='=')
		{
			j=0;//终结while 
			break;
		}
	}
	cout<<all[0];
} 

学c++时间不长,如有错误,请各位大佬多多指教,感激不尽!!!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值