Problem A: A + B
Problem A: A + B
Time Limit: 1 Sec Memory Limit: 128 MB
Submit: 17 Solved: 10
[Submit][Status][Web Board] [Edit] [TestData]
Description
读入两个小于10000的正整数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
#include<iostream> #include<stdio.h> #include<string.h> #include<string> using namespace std; int main() { string a[10000];//分别存放‘+’号前英文 char a1[10000];//存放英文对应的数字字符 string b[10000];//存放加号后,等号前的英文 char b1[10000];//存放英文对应的数字字符 int k,shu1,shu2; int g; while(1) { memset(a1,'\0',sizeof(a1));//初始化 memset(b1,'\0',sizeof(b1));//初始化 int i=0; int j=0; while(cin>>a[i]) { if(a[i][0]=='+') { i--; break; //存放加号前的英文词 } i++; } while(cin>>b[j]) { if(b[j][0]=='=') { j--; //存放加号后,等于号前的英文词 break; } j++; } if(a[0]=="zero"&&i==0||b[0]=="zero"&&j==0) { break; //如果是zero + zero =的话,直接终止程序 } g=0; for(k=0;k<=i;k++) { if(a[k]=="zero") a1[g++]='0'; if(a[k]=="one") a1[g++]='1'; if(a[k]=="two") a1[g++]='2'; if(a[k]=="three") a1[g++]='3'; if(a[k]=="four") a1[g++]='4'; if(a[k]=="five") a1[g++]='5'; if(a[k]=="six") a1[g++]='6'; if(a[k]=="seven") a1[g++]='7'; if(a[k]=="eight") a1[g++]='8'; if(a[k]=="nine") a1[g++]='9'; } sscanf(a1,"%d",&shu1); //将存放在a1数组中的字符变成整型,存放在shu1中 g=0; // g变成0 for(k=0;k<=j;k++) { if(b[k]=="zero") b1[g++]='0'; if(b[k]=="one") b1[g++]='1'; if(b[k]=="two") b1[g++]='2'; if(b[k]=="three") b1[g++]='3'; if(b[k]=="four") b1[g++]='4'; if(b[k]=="five") b1[g++]='5'; if(b[k]=="six") b1[g++]='6'; if(b[k]=="seven") b1[g++]='7'; if(b[k]=="eight") b1[g++]='8'; if(b[k]=="nine") b1[g++]='9'; } sscanf(b1,"%d",&shu2); //将存放在b1数组中的字符变成整型,存放在shu2中 cout<<shu1+shu2<<endl; //求和 } return 0; }