A + B
读入两个小于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
代码如下,已AC:
#include<iostream>
#include<cstring>
using namespace std;
int main()
{
char a[500] = {0};
int x=0;
while (true)
{
int s1 = 0, s2 = 0;
while (true)
{
scanf("%s", a);
if (strcmp(a, "+") == 0)break;
else if (strcmp(a, "zero") == 0)x = 0;
else if (strcmp(a, "one") == 0)x = 1;
else if (strcmp(a, "two") == 0)x = 2;
else if (strcmp(a, "three") == 0)x = 3;
else if (strcmp(a, "four") == 0)x = 4;
else if (strcmp(a, "five") == 0)x = 5;
else if (strcmp(a, "six") == 0)x = 6;
else if (strcmp(a, "seven") == 0)x = 7;
else if (strcmp(a, "eight") == 0)x = 8;
else if (strcmp(a, "nine") == 0)x = 9;
s1 *= 10; s1 += x;
}
while (true)
{
scanf("%s", a);
if (strcmp(a, "=") == 0)break;
else if (strcmp(a, "zero") == 0)x = 0;
else if (strcmp(a, "one") == 0)x = 1;
else if (strcmp(a, "two") == 0)x = 2;
else if (strcmp(a, "three") == 0)x = 3;
else if (strcmp(a, "four") == 0)x = 4;
else if (strcmp(a, "five") == 0)x = 5;
else if (strcmp(a, "six") == 0)x = 6;
else if (strcmp(a, "seven") == 0)x = 7;
else if (strcmp(a, "eight") == 0)x = 8;
else if (strcmp(a, "nine") == 0)x = 9;
s2 *= 10; s2 += x;
}
if (s1 == 0 && s2 == 0)break;
else cout<<s1+s2<<endl;
}
最开始我想的是用一个scanf把输入的那一串读入,但是错了,结果是一个很奇怪的结果。
随后我看了下其他博主的文,发现这样的解法才是对的。
需要分部分的输入。
还有就是strcmp函数的用法,在c++中用使用“cstring”的头文件。
题目总体来说不是很难,形式有点意思