读入两个小于100的正整数A和B,计算A+B.
需要注意的是:A和B的每一位数字由对应的英文单词给出.
需要注意的是:A和B的每一位数字由对应的英文单词给出.
one + two = three four + five six = zero seven + eight nine = zero + zero =
3 90 96
这是一道加强版A+B,主要是实现一个函数能把英文转化为数字,我主要是用for循环比较每个单词的前两个字母判断是什么数字,不过测试有点坑的是zero zero + zero zero = 也是当作0+0 = 结束条件。
#include<iostream> #include<cstdio> #include<cstring> using namespace std; int judge(char a,char b); int main() { char add[500]; int i,j,len,sum,num; while(gets(add)!=NULL) { int flag[2]={0}; len=strlen(add); sum=0; j=0; for(i=0;i<len;i++) { if(add[i]=='=') { break; } if(add[i]!='+'&&add[i]!=' ') { num=judge(add[i],add[i+1]);//判断英文前两个字符即可 if(flag[0]==1&&flag[1]==1) { break; } while(add[i]!=' ') { i++; } if(num==0&&add[i+1]=='+') { flag[j]=1; j+=1; } if(add[i+1]!='+'&&add[i+1]!='=') { num*=10; sum+=num; } else { sum+=num; } } } if(flag[0]==1&&flag[1]==1||sum==0)//加来等于0就跳出。方法有点笨 { break; } printf("%d\n",sum); } return 0; } int judge(char a,char b) //判断英文是什么数字 { if(a=='o'&&b=='n') { return 1; } if(a=='t'&&b=='w') { return 2; } if(a=='t'&&b=='h') { return 3; } if(a=='f'&&b=='o') { return 4; } if(a=='f'&&b=='i') { return 5; } if(a=='s'&&b=='i') { return 6; } if(a=='s'&&b=='e') { return 7; } if(a=='e'&&b=='i') { return 8; } if(a=='n'&&b=='i') { return 9; } if(a=='z'&&b=='e') { return 0; } return 0; }