1260 不一样的A+B

1260 不一样的A+B

题目描述

读入两个小于100的正整数A和B,计算A+B的值并输出。

需要注意的是:整数A和B的每一位数字由对应的英文单词给出。如整数34表示为three four。

输入要求

测试输入包含若干测试用例,每个测试用例占一行,格式为"A + B =",相邻两字符串有一个空格间隔。当A和B同时为0时输入结束,此时的结果不要输出。

输出要求

对每个测试用例输出一行结果,即A+B的值,用数值形式输出。

测试数据

one + two =
three four + five six =
zero seven + eight nine =
zero + zero =

3
90
96

AC代码

因为写的烦,所以记录了下,方便大家看看

#include <bits/stdc++.h>
using namespace std;
string s[10]= {"zero","one","two","three","four","five","six","seven","eight","nine"};
int find(string res) {
	for(int i=0; i<10; i++) {
		if(s[i]==res) return i;
	}
}
int main() {
	string in,temp="";
	int a,b,t=0;
	while(getline(cin,in)) {
		t=0;
		temp="";
		for(int i=0; i<in.size(); i++) {
			if(in[i]>='a' && in[i]<='z') temp+=in[i];
			if(in[i]==' ') {
				if(temp=="") continue;//如果没有这句话,多余“ ”会产生额外的数
				t=t*10+find(temp);
				temp="";
			}
			if(in[i]=='+') {
				a=t;
				t=0;
			}
			if(in[i]=='=') b=t;
		}
		if(a==0 && b==0) break;
		else cout<<a+b<<endl;
	}

	return 0;
}

原文地址:https://www.cnblogs.com/xxhao/p/14315832.html