读入两个小于100的正整数A和B,计算A+B.
需要注意的是:A和B的每一位数字由对应的英文单词给出.
Input
测试输入包含若干测试用例,每个测试用例占一行,格式为"A + B =",相邻两字符串有一个空格间隔.当A和B同时为0时输入结束,相应的结果不要输出.
Output
对每个测试用例输出1行,即A+B的值.
Sample Input
one + two =
three four + five six =
zero seven + eight nine =
zero + zero =
Sample Output
3
90
96
思路,先用gets函数读入计算式,然后暴力求出答案,若和sum为零,则不输出结束程序,否则则输出sum的值
代码如下:
#include <algorithm>
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <math.h>
using namespace std;
char s[105];
//计算是十位还是个位
int cifang(int i)
{
if(i==0)
return 1;
else
return 10;
}
int main()
{
//数组清零
memset(s,0,sizeof(s));
//读入计算式
while(gets(s))
{
//测量长度
int l1=strlen(s);
int l2;//表示加号的位置
int sum=0;//和
int k=0;//表示位数
//找到加号的位置
for(int i=0;i<l1;i++)
if(s[i]=='+')
{
l2=i;
break;
}
//暴力算出加号前的数为多少
for(int i=l2-2;i>1;i--)
{
if(s[i]=='o'&&s[i-1]=='r'&&s[i-2]=='e')
sum+=0*cifang(k);
else if(s[i]=='e'&&s[i-1]=='n'&&s[i-2]=='i')
sum+=9*cifang(k);
else if(s[i]=='t'&&s[i-1]=='h'&&s[i-2]=='g')
sum+=8*cifang(k);
else if(s[i]=='n'&&s[i-1]=='e'&&s[i-2]=='v')
sum+=7*cifang(k);
else if(s[i]=='x'&&s[i-1]=='i'&&s[i-2]=='s')
sum+=6*cifang(k);
else if(s[i]=='e'&&s[i-1]=='v'&&s[i-2]=='i')
sum+=5*cifang(k);
else if(s[i]=='r'&&s[i-1]=='u'&&s[i-2]=='o')
sum+=4*cifang(k);
else if(s[i]=='e'&&s[i-1]=='e'&&s[i-2]=='r')
sum+=3*cifang(k);
else if(s[i]=='o'&&s[i-1]=='w'&&s[i-2]=='t')
sum+=2*cifang(k);
else if(s[i]=='e'&&s[i-1]=='n'&&s[i-2]=='o')
sum+=1*cifang(k);
else if(s[i]==' ')
//若有空格,则位数变十位
k++;
else
continue;
}
//将位数改为个位
k=0;
//暴力计算出加号之后的值,再加上加号之前的和
for(int i=l1-3;i>l2+3;i--)
{
if(s[i]=='o'&&s[i-1]=='r'&&s[i-2]=='e')
sum+=0*cifang(k);
else if(s[i]=='e'&&s[i-1]=='n'&&s[i-2]=='i')
sum+=9*cifang(k);
else if(s[i]=='t'&&s[i-1]=='h'&&s[i-2]=='g')
sum+=8*cifang(k);
else if(s[i]=='n'&&s[i-1]=='e'&&s[i-2]=='v')
sum+=7*cifang(k);
else if(s[i]=='x'&&s[i-1]=='i'&&s[i-2]=='s')
sum+=6*cifang(k);
else if(s[i]=='e'&&s[i-1]=='v'&&s[i-2]=='i')
sum+=5*cifang(k);
else if(s[i]=='r'&&s[i-1]=='u'&&s[i-2]=='o')
sum+=4*cifang(k);
else if(s[i]=='e'&&s[i-1]=='e'&&s[i-2]=='r')
sum+=3*cifang(k);
else if(s[i]=='o'&&s[i-1]=='w'&&s[i-2]=='t')
sum+=2*cifang(k);
else if(s[i]=='e'&&s[i-1]=='n'&&s[i-2]=='o')
sum+=1*cifang(k);
else if(s[i]==' ')
//若有空格,则位数变十位
k++;
else
continue;
}
//进行判断是否和为零
if(sum==0)
//为零,结束
break;
else
//不为零,输出
printf("%d\n",sum);
//数组清零
memset(s,0,sizeof(s));
}
return 0;
}