A + B
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 12261 Accepted Submission(s): 7179
Problem Description
读入两个小于100的正整数A和B,计算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/*最开始做这一题时,觉得无从下手,后来参考人家的代码后才发现原来可以用strcmp函数*/代码:#include<stdio.h> #include<string.h> int main() { char a[100],b[100]; int n,m,i,j,s; while(scanf("%s",a)!=EOF) { m=0; n=0; i=0; j=0; while(a[0]!='+') { if(strcmp(a,"zero")==0) i=0; else if(strcmp(a,"one")==0) i=1; else if(strcmp(a,"two")==0) i=2; else if(strcmp(a,"three")==0) i=3; else if(strcmp(a,"four")==0) i=4; else if(strcmp(a,"five")==0) i=5; else if(strcmp(a,"six")==0) i=6; else if(strcmp(a,"seven")==0) i=7; else if(strcmp(a,"eight")==0) i=8; else if(strcmp(a,"nine")==0) i=9; n=n*10+i; getchar();/*必须要有这一步,否则会产生错误*/ scanf("%s",a);/*继续输入*/ } getchar(); scanf("%s",b); while(b[0]!='=')/*同上*/ { if(strcmp(b,"zero")==0) j=0; else if(strcmp(b,"one")==0) j=1; else if(strcmp(b,"two")==0) j=2; else if(strcmp(b,"three")==0) j=3; else if(strcmp(b,"four")==0) j=4; else if(strcmp(b,"five")==0) j=5; else if(strcmp(b,"six")==0) j=6; else if(strcmp(b,"seven")==0) j=7; else if(strcmp(b,"eight")==0) j=8; else if(strcmp(b,"nine")==0) j=9; m=m*10+j; getchar(); scanf("%s",b); } if(n==0&&m==0) break; else s=n+m; printf("%d\n",s); } return 0; }