题目1010:A + B
时间限制:1 秒
内存限制:32 兆
特殊判题:否
提交:6788
解决:3448
-
题目描述:
-
读入两个小于100的正整数A和B,计算A+B.
需要注意的是:A和B的每一位数字由对应的英文单词给出.
-
输入:
-
测试输入包含若干测试用例,每个测试用例占一行,格式为"A + B =",相邻两字符串有一个空格间隔.当A和B同时为0时输入结束,相应的结果不要输出.
-
输出:
-
对每个测试用例输出1行,即A+B的值.
-
样例输入:
-
one + two = three four + five six = zero seven + eight nine = zero + zero =
-
样例输出:
-
3 90 96
-
来源:
#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
int fun(char str[20])
{
if(strcmp(str,"zero")==0) return 0;
else if(strcmp(str,"one")==0) return 1;
else if(strcmp(str,"two")==0) return 2;
else if(strcmp(str,"three")==0) return 3;
else if(strcmp(str,"four")==0) return 4;
else if(strcmp(str,"five")==0) return 5;
else if(strcmp(str,"six")==0) return 6;
else if(strcmp(str,"seven")==0) return 7;
else if(strcmp(str,"eight")==0) return 8;
else if(strcmp(str,"nine")==0) return 9;
}
int main()
{
int a,b;
char str1[20],str2[20],str3[20],str4[20],str5[20],str6[20];
while(cin>>str1)
{
a=fun(str1);
cin>>str2;
if(strcmp(str2,"+")!=0)
{
a=a*10+fun(str2);
cin>>str3;
cin>>str4;
b=fun(str4);
cin>>str5;
if(strcmp(str5,"=")!=0)
{
b=b*10+fun(str5);
cin>>str6;
if(a==0&&b==0)
{
return 0;
}
else
cout<<a+b<<endl;
}
else
{
if(a==0&&b==0)
{
return 0;
}
else
cout<<a+b<<endl;
}
}
else
{
cin>>str3;
b=fun(str3);
cin>>str4;
if(strcmp(str4,"=")!=0)
{
b=b*10+fun(str4);
cin>>str5;
if(a==0&&b==0)
{
return 0;
}
else
cout<<a+b<<endl;
}
else
{
if(a==0&&b==0)
{
return 0;
}
else
cout<<a+b<<endl;
}
}
}
return 0;
}