Description
读入两个小于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 <bits/stdc++.h>
using namespace std;
char s[30];
char *d = " ";
char *p;
char num[10][10] = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"};
int getNum(char *p) {
for (int i = 0; i < 10; i++)
if (strcmp(p, num[i]) == 0)
return i;
}
int main() {
int n[2];
int i = 0;
int m;
while (true) {
gets(s);
memset(n, 0, sizeof(n));
i = 0;
p = strtok(s, d);
while (p) {
if (strcmp(p, "+") == 0 || strcmp(p, "=") == 0) {
p = strtok(NULL, d);
i++;
}
else {
m = getNum(p);
n[i] = n[i] * 10 + m;
p = strtok(NULL, d);
}
}
if (n[0] == n[1] && n[0] == 0)
break;
printf("%d\n", n[0] + n[1]);
}
return 0;
}