A+B(VJ)

读入两个小于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;
}

猜你喜欢

转载自blog.csdn.net/weixin_44017102/article/details/88358649
A+B
vj