one + two = 3 C语言

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;
    }
}


你可能感兴趣的:(acm竞赛)