1381 - A + B
读入两个小于100的正整数A和B,计算A+B.
需要注意的是:A和B的每一位数字由对应的英文单词给出.
Input
测试输入包含若干测试用例,每个测试用例占一行,格式为"A + B =",相邻两字符串有一个空格间隔.当A和B同时为0时输入结束,相应的结果不要输出.
Output
对每个测试用例输出1行,即A+B的值.
Examples
Input
one + two = three four + five six = zero seven + eight nine = zero + zero =
Output
3 90 96
Solution C
#include "stdio.h" #include "string.h" char strnum[10][10]={"zero","one","two","three","four","five","six","seven","eight","nine"}; int getnum(char str[]){ int i; for(i=0;i<10;i++){ if(!strcmp(strnum[i],str))//strcmp两字符串相等是为0 return i; } return 0; } int main() { char str[100]; while(scanf("%s",str)!=EOF){ int a=0; int b=0; while(strcmp(str,"+")){ a=a*10+getnum(str); scanf("%s",str);} while(strcmp(str,"=")){ b=b*10+getnum(str); scanf("%s",str);} if(!a&&!b) break; printf("%d\n",a+b); } return 0; }
Solution C++
#include <stdio.h> #include <string.h> char strNum[10][10] = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"}; int GetNum(char str[]){ for(int i=0; i<10; i++){ if(!strcmp(str, strNum[i])){ return i; } } return 0; } int main(){ char str[100]; while(scanf("%s", str) != EOF){ int a = 0; int b = 0; while(strcmp(str, "+")){ a = a*10 + GetNum(str); scanf("%s", str); } while(strcmp(str, "=")){ b = b*10 + GetNum(str); scanf("%s", str); } if(!a && !b){ break; } printf("%d\n", a+b); } return 0; }