九度1010 A+B(字符串处理)

来源:互联网 发布:自己设计房子软件 编辑:程序博客网 时间:2024/06/08 00:36
题目1010:A + B

时间限制:1 秒

内存限制:32 兆

特殊判题:

提交:6788

解决:3448

题目描述:
读入两个小于100的正整数A和B,计算A+B.
需要注意的是:A和B的每一位数字由对应的英文单词给出.
输入:
测试输入包含若干测试用例,每个测试用例占一行,格式为"A + B =",相邻两字符串有一个空格间隔.当A和B同时为0时输入结束,相应的结果不要输出.
输出:
对每个测试用例输出1行,即A+B的值.
样例输入:
one + two =three four + five six =zero seven + eight nine =zero + zero =
样例输出:
39096
来源:

2005年浙江大学计算机及软件工程研究生机试真题



#include<cstdio>#include<cstring>#include<iostream>using namespace std;int fun(char str[20]){if(strcmp(str,"zero")==0) return 0;else if(strcmp(str,"one")==0) return 1;else if(strcmp(str,"two")==0) return 2;else if(strcmp(str,"three")==0) return 3;else if(strcmp(str,"four")==0) return 4;else if(strcmp(str,"five")==0) return 5;else if(strcmp(str,"six")==0) return 6;else if(strcmp(str,"seven")==0) return 7;else if(strcmp(str,"eight")==0) return 8;else if(strcmp(str,"nine")==0) return 9;}int main(){int a,b;char str1[20],str2[20],str3[20],str4[20],str5[20],str6[20];while(cin>>str1){a=fun(str1);cin>>str2;if(strcmp(str2,"+")!=0){a=a*10+fun(str2);cin>>str3;cin>>str4;b=fun(str4);cin>>str5;if(strcmp(str5,"=")!=0){b=b*10+fun(str5);cin>>str6;if(a==0&&b==0){return 0;}elsecout<<a+b<<endl;}else{if(a==0&&b==0){return 0;}elsecout<<a+b<<endl;}}else{cin>>str3;b=fun(str3);cin>>str4;if(strcmp(str4,"=")!=0){b=b*10+fun(str4);cin>>str5;if(a==0&&b==0){return 0;}elsecout<<a+b<<endl;}else{if(a==0&&b==0){return 0;}elsecout<<a+b<<endl;}}}return 0;}


0 0