计算机考研复试 A+B
题目描述
读入两个小于100的正整数A和B,计算A+B. 需要注意的是:A和B的每一位数字由对应的英文单词给出.
输入描述:
测试输入包含若干测试用例,每个测试用例占一行,格式为"A + B =",相邻两字符串有一个空格间隔.当A和B同时为0时输入结束,相应的结果不要输出.
输出描述:
对每个测试用例输出1行,即A+B的值.
示例1
输入
one + two = three four + five six = zero seven + eight nine = zero + zero =
输出
3 90 96
//计算机考研复试 A+B /* 程序设计思想: 1.关键就是字符串的处理,怎么把每个数给分离出来,用cin一个一个的读入,用change()函数给转换成具体的数字. 2.声明char a[10][10],存放单词,用于比较。 3.注意点: strcmp函数,比较两个字符串 设这两个字符串为str1,str2, 若str1==str2,则返回零; 若str1<str2,则返回负数; 若str1>str2,则返回正数。 */ //程序实现: #include<iostream> #include<string> using namespace std; char a[10][10] = { "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" }; int change(string s) { //将单词转换成对应数字 for (int i = 0; i < 10; i++) { if (a[i] == s) return i; } return 0; } int main() { string str; while (1) { int a = 0, b = 0; while (cin >> str && str != "+") { //输入单词,且不为 + a = a * 10 + change(str); } while (cin >> str && str != "=") { //输入单词,且不为 = b = b * 10 + change(str); } if (a == 0 && b == 0) //当A和B同时为0时输入结束,相应的结果不要输出. break; else cout << a + b << endl; } return 0; }