one + two = 3
题目描述
读入两个小于100的正整数A和B,计算A+B。需要注意的是:A和B的每一位数字由对应的英文单词给出。
输入
测试输入包含若干测试用例,每个测试用例占一行,格式为"A + B =",相邻两字符串有一个空格间隔。当A和B同时为0时输入结束,相应的结果不要输出。
输出
对每个测试用例输出1行,即A+B的值。
样例输入
one + two =
three four + five six =
zero seven + eight nine =
zero + zero =
样例输出
3
90
96
AC代码
.
#include<stdio.h>
char num[12][7]= { "zero", "one", "two", "three", "four"\
,"five", "six", "seven", "eight", "nine", "+", "=" };//定义字典
int change (char *input);//转换函数
int main ()
{
char input[7];//定义输入字符
while (1)
{
int a=0,b=0;//重置a b
while (scanf("%s", &input))//输入 挨个转换
{
if (change(input)==11)// 检测到=是完成输入
break;//推出输入
if (change(input)==10)//检测到+ 说明之前b的值是a的值
{
a = b;//b的值赋值给a
b = 0;//b重新开始赋值
}
else//吧a的值暂存在b中,当检测到+时 将b的值赋给a
{
b = b*10 + change(input);//b的赋值
}
}
if (a+b==0)//当两个数都为zero的时候 程序结束(由于没有负数)
break;
else
printf("%d\n", a+b);//结果输出
}
return 0;
}
int change (char *input)//转换函数
{
for (int i=0; i<12; i++)
{
if (strcmp(input,num[i])==0)//查找字典比对
return i;
}
}