本质是字符串处理问题,这里我们需要搞清楚cin与getline的区别,cin碰到空格和回车都会结束读取,而getline只有碰到回车的时候会结束读取,所以一般我们在读取有空格的字符串时采用getline。
本题不一样,本题仔细观察,数字的英文都被空格所隔开了,所以我们正好利用cin的这个特性将两个加数取出。
#include<iostream>
#include<unordered_map>
using namespace std;
unordered_map<string,int>mp={
{"zero",0},{"one",1},{"two",2},{"three",3},{"four",4},{"five",5},{"six",6},{"seven",7},{"eight",8},
{"nine",9}
};
int input()
{
int res=0;
string str;
while(cin>>str)//不断读入str由于遇到空格会结束所以第一个可以计算得到。再碰到+=跳出读入。
{
if(str=="+"||str=="=")break;
res=res*10+mp[str];
}
return res;
}
int main()
{
while(true)
{
int a=input(), b=input();//由题目读出a=0,b=0时才算结束
if(!a&&!b)break;
cout<<a+b<<endl;
}
return 0;
}
408

被折叠的 条评论
为什么被折叠?



