Problem A: A + B

Problem A: A + B
Time Limit: 1 Sec Memory Limit: 128 MB
Submit: 17 Solved: 10
[Submit][Status][Web Board] [Edit] [TestData]
Description
读入两个小于10000的正整数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

#include<iostream>
#include<stdio.h>
#include<string.h>
#include<string>
using namespace std;
int main()
{
    string a[10000];//分别存放‘+’号前英文
    char a1[10000];//存放英文对应的数字字符
    string b[10000];//存放加号后,等号前的英文
    char b1[10000];//存放英文对应的数字字符
    int k,shu1,shu2;
    int g;
    while(1)
    {   
        memset(a1,'',sizeof(a1));//初始化
            memset(b1,'',sizeof(b1));//初始化
        int i=0;
        int j=0;
        while(cin>>a[i])
    {
        if(a[i][0]=='+')
        {
            i--;
            break;      //存放加号前的英文词
        }
        i++;
    }
    while(cin>>b[j])
    {
        if(b[j][0]=='=')
        {
            j--;               //存放加号后,等于号前的英文词
            break;
        }
        j++;
    }
    if(a[0]=="zero"&&i==0||b[0]=="zero"&&j==0)
    {
        break;                          //如果是zero + zero =的话,直接终止程序
    } 
    g=0;
    for(k=0;k<=i;k++)
    {
       if(a[k]=="zero")
           a1[g++]='0';
       if(a[k]=="one")
           a1[g++]='1';
       if(a[k]=="two")
           a1[g++]='2';
        if(a[k]=="three")
           a1[g++]='3';
         if(a[k]=="four")
           a1[g++]='4';
         if(a[k]=="five")
           a1[g++]='5';
        if(a[k]=="six")
           a1[g++]='6';
         if(a[k]=="seven")
           a1[g++]='7';
        if(a[k]=="eight")
              a1[g++]='8';
        if(a[k]=="nine")
           a1[g++]='9';
    }
    sscanf(a1,"%d",&shu1);        //将存放在a1数组中的字符变成整型,存放在shu1中
    g=0;                   //  g变成0
    for(k=0;k<=j;k++)
    {
       if(b[k]=="zero")
           b1[g++]='0';
       if(b[k]=="one")
           b1[g++]='1';
       if(b[k]=="two")
           b1[g++]='2';
        if(b[k]=="three")
           b1[g++]='3';
         if(b[k]=="four")
          b1[g++]='4';
         if(b[k]=="five")
           b1[g++]='5';
        if(b[k]=="six")
           b1[g++]='6';
         if(b[k]=="seven")
           b1[g++]='7';
        if(b[k]=="eight")
              b1[g++]='8';
        if(b[k]=="nine")
           b1[g++]='9';
    }
        sscanf(b1,"%d",&shu2);      //将存放在b1数组中的字符变成整型,存放在shu2中
    cout<<shu1+shu2<<endl;          //求和
    }
    return 0;
}
原文地址:https://www.cnblogs.com/NYNU-ACM/p/4236892.html