Hdoj 1288 A+B

Problem Description
读入两个小于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

Source
浙大计算机研究生复试上机考试-2005年


题目分析
虽然还是A+B的问题,但是这一次涉及到了字符串与数字的转化
Code

#include
#include
#include
#include
#include
#include
#include
using namespace std;
int getnum(string s)
{
    switch(s[0])
    {
        case 'z':return 0;
        case 'o':return 1;
        case 't':
            if(s[1]=='w') return 2; else return 3;
        case 'f':
            if(s[1]=='o') return 4; else return 5;
        case 's':
            if(s[1]=='i') return 6; else return 7;
        case 'e':return 8;
        case 'n':return 9;
    }
}//用首字母和第二个字母判断该字符串对应的数字
int main()
{
    //zero,one,two,three,four,five,seven,eight,nine,
    string s;
    //cin>>s;
    for(;;)
    {
        int t1=0,t2=0;
        cin>>s;
        while(s[0]!='+')
        {
            t1=t1*10+getnum(s);
            //cout<
            //cout<
            cin>>s;
        }
        cin>>s;
        while(s[0]!='=')
        {
            t2=t2*10+getnum(s);
            //cout<
            //cout<
            cin>>s;
        }
        if(t1==0&&t2==0) break;
        else
        {
            cout<return 0;
}

更多问题请关注个人博客,不定时更新

你可能感兴趣的:(ACM)