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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值