这道题花了20分钟(简单个屁!!!)
题目:
时间限制 : 1 Sec
内存限制 : 16 Mb
提交 : 3105
解决 : 1618
题目描述
做了,简单的a,b和的问题。但是,如果要求输入的情况不是a和b,而是整个加法表达式呢? 请想办法,计算加法表达式的结果。
输入
输入一个加法表达式,如1+2=。
输出
计算出输入表达式的正确结果
样例输入
1+2=
样例输出
3
完整的输入表达式。加号两边的数值属于int范围内,且第一个数可能为负数。
方法:
1、字符串读入。
2、用循环判断是否为一个数,然后记录。
3、两个数相加。
4、负数要考虑。
标程:
#include<bits/stdc++.h>
using namespace std;
int main()
{
char s[1900];
int ans=0,ans1=0,an=1,an1;
while ((s[an]=getchar())!=10)
{
an++;
}
for (int i=1;i<=an-1;i++)
{
if ((s[i]!=43)&&(s[i]!=‘-‘))ans=ans*10+s[i]-48;
else
{
if (s[i]==43)
{
an1=i;
i=an;
}
}
}
if (s[1]==‘-‘)ans=0-ans;
for (int i=an1+1;i<=an-1;i++)
{
if ((s[i]!=‘=‘)&&(s[i]!=‘-‘) )ans1=ans1*10+s[i]-48;
}
if (s[an1+1]==‘-‘)ans1=0-ans1;
cout<<ans+ans1<<endl;
return 0;
}