E - A + B

读入两个小于100的正整数A和B,计算A+B.
需要注意的是:A和B的每一位数字由对应的英文单词给出.
Input
测试输入包含若干测试用例,每个测试用例占一行,格式为"A + B =",相邻两字符串有一个空格间隔.当A和B同时为0时输入结束,相应的结果不要输出.
Output
对每个测试用例输出1行,即A+B的值.
Sample Input
one + two =
three four + five six =
zero seven + eight nine =
zero + zero =
Sample Output
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;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值