读入两个小于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
#include <stdio.h>
#include <string.h>
const char *sam[] = {"zero","one","two","three","four","five","six","seven","eight","nine"};
char xin[100];
int pei(char str[]) {
int i;
for(i=0;i<10;++i)
if(!strcmp(xin,sam[i]))
return i;
}
int main() {
int mode=0,a[2];
a[0]=a[1]=0;
while(scanf("%s",xin) == 1) {
if(!strcmp(xin, "+")) {
++mode;
continue;
}
else if(!strcmp(xin,"=")) {
if(a[0] + a[1] == 0) break;
printf("%d\n", a[0] + a[1]);
mode = a[0] = a[1] = 0;
continue;
}
a[mode]=a[mode]*10+pei(xin);
}
return 0;
}
题解:这个看起来是水题的题一点儿都不水。。。太难了。
先识别字符串,将其转换成数字,再计算。