资源限制
时间限制: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++时间不长,如有错误,请各位大佬多多指教,感激不尽!!!