杭电acm1228

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;
}
View Code

 

posted @ 2013-05-28 20:25  执着追求的IT小小鸟  阅读(192)  评论(0编辑  收藏  举报