测试输入包含若干测试用例,每个测试用例占一行,格式为"A + B =",相邻两字符串有一个空格间隔.当A和B同时为0时输入结束,相应的结果不要输出.
对每个测试用例输出1行,即A+B的值.
one + two = three four + five six = zero seven + eight nine = zero + zero =
3 90 96
/*
 * @Qusetion: https://dwz.lc/iiYuaA2eO 
 * @Author: 一届书生
 * @Date: 2020-03-19 10:13:14
 * @LastEditTime: 2020-03-21 23:54:26
 */
#include <iostream>
#include <string>
#include <map>
using namespace std;
char s[50];
int main()
{
    map<string, int> mp{{"one", 1}, {"two", 2}, {"three", 3}, {"four", 4}, 
        {"five", 5}, {"six", 6}, {"seven", 7}, {"eight", 8}, {"nine", 9}, {"zero", 0}};
    while (gets(s))
    {
        string t[10];
        for (int i = 0, j = 0; i < 50; i++)
        {
            if (s[i] == ‘ ‘)
                j++;
            else
                t[j] += s[i];
        }
        if (t[0] == t[2] && t[2] == "zero")
            return 0;
        // *+*
        if (t[1] == "+" && t[3][0] == ‘=‘)
            cout << mp[t[0]] + mp[t[2]] << endl;
        // *+**
        if (t[1] == "+" && t[4][0] == ‘=‘)
            cout << mp[t[0]] + mp[t[2]] * 10 + mp[t[3]] << endl;
        // **+*
        if (t[2] == "+" && t[3][0] == ‘=‘)
            cout << mp[t[0]] * 10 + mp[t[1]] + mp[t[3]] << endl;
        // **+**
        if (t[2] == "+" && t[5][0] == ‘=‘)
            cout << mp[t[0]] * 10 + mp[t[1]] + mp[t[3]] * 10 + mp[t[4]] << endl;
    }
    return 0;
}
原文:https://www.cnblogs.com/52dxer/p/12543493.html