杭电acm1228

本文介绍了解决HDU 1228问题的一种算法实现,通过分析字符串中数字单词转换为整数的过程,详细解释了如何通过计算空格数量判断数字大小,并实现加法运算。

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

 

转载于:https://www.cnblogs.com/huzhenbo113/archive/2013/05/28/3104330.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值