读入两个小于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
做这个题呢,首先要想着如何把输入的字符串分离成能相加的数字,并且能正确的表示出来他们的量级关系,在C语言里面没有可以直接转换的函数,所以想到可以用strcmp来比较每次输入的字符串表示的数字是多少,(注意输入应该用可以分离“ ”的scanf)。
代码如下:
#include<stdio.h>
#include<string.h>
int change(char z[])
{
if (strcmp(z, "zero") == 0) return 0;
if (strcmp(z, "one") == 0) return 1;
if (strcmp(z, "two") == 0) return 2;
if (strcmp(z, "three") == 0) return 3;
if (strcmp(z, "four") == 0) return 4;
if (strcmp(z, "five") == 0) return 5;
if (strcmp(z, "six") == 0) return 6;
if (strcmp(z, "seven") == 0) return 7;
if (strcmp(z, "eight") == 0) return 8;
if (strcmp(z, "nine") == 0) return 9;
return 0;
}
int main()
{
char z[10];
int a = 0, b=0;
while (scanf("%s", &z) != EOF)
{
if (strcmp(z, "=") == 0)
{
if (a == 0 && b == 0) break;
else printf("%d\n", a + b);
a = 0;
}
if (strcmp(z, "+") == 0)
{
b = a;
a = 0;
}
else a = a * 10 + change(z);
}
return 0;
}