http://acm.hdu.edu.cn/showproblem.php?pid=1228
题目很简单,不过自己写的代码很繁,先判断加号前面的,判断时可以通过空格的数量来计算数字的多少,
然后判断加号后面,等号前面的
#include<stdio.h> #include<string.h> int main() { int n,a,b,i,j,sum; char str[11][10]={"zero","one","two","three","four","five","six","seven","eight","nine"}; char s[100],ss[10]; while(gets(s),strcmp(s,"zero + zero =")) { sum=0; for(i=0;s[i]!='+';i++) if(s[i]==' ') sum++; if(sum==1) { i=0; for(j=0;s[j]!=' ';j++) ss[i++]=s[j]; ss[i]='\0'; for(i=0;strcmp(str[i],ss);i++); a=i; } else { i=0; for(j=0;s[j]!=' ';j++) ss[i++]=s[j]; ss[i]='\0'; for(i=0;strcmp(str[i],ss);i++); a=i*10; i=0; for(j++;s[j]!=' ';j++) ss[i++]=s[j]; ss[i]='\0'; for(i=0;strcmp(str[i],ss);i++); a+=i; } sum=0; for(j=0;s[j]!='+';j++); n=j+2; for(j+=2;s[j]!='=';j++) if(s[j]==' ') sum++; if(sum==1) { i=0; for(j=n;s[j]!=' ';j++) ss[i++]=s[j]; ss[i]='\0'; for(i=0;strcmp(str[i],ss);i++); b=i; } else { i=0; for(j=n;s[j]!=' ';j++) ss[i++]=s[j]; ss[i]='\0'; for(i=0;strcmp(str[i],ss);i++); b=i*10; i=0; for(j++;s[j]!=' ';j++) ss[i++]=s[j]; ss[i]='\0'; for(i=0;strcmp(str[i],ss);i++); b+=i; } printf("%d\n",a+b); } return 0; }