HDOJ1228 A+B

来源:互联网 发布:显示器连接网络机顶盒 编辑:程序博客网 时间:2024/05/21 22:25

A + B

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 12261    Accepted Submission(s): 7179


Problem Description
读入两个小于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
39096
/*最开始做这一题时,觉得无从下手,后来参考人家的代码后才发现原来可以用strcmp函数*/
代码:
#include<stdio.h>#include<string.h>int main(){    char a[100],b[100];    int n,m,i,j,s;    while(scanf("%s",a)!=EOF)    {          m=0;      n=0;      i=0;      j=0;      while(a[0]!='+')      {                if(strcmp(a,"zero")==0) i=0;        else if(strcmp(a,"one")==0) i=1;        else if(strcmp(a,"two")==0) i=2;        else if(strcmp(a,"three")==0) i=3;        else if(strcmp(a,"four")==0) i=4;        else if(strcmp(a,"five")==0) i=5;        else if(strcmp(a,"six")==0) i=6;        else if(strcmp(a,"seven")==0) i=7;        else if(strcmp(a,"eight")==0) i=8;        else if(strcmp(a,"nine")==0) i=9;        n=n*10+i;        getchar();/*必须要有这一步,否则会产生错误*/        scanf("%s",a);/*继续输入*/      }      getchar();      scanf("%s",b);      while(b[0]!='=')/*同上*/      {        if(strcmp(b,"zero")==0) j=0;        else if(strcmp(b,"one")==0) j=1;        else if(strcmp(b,"two")==0) j=2;        else if(strcmp(b,"three")==0) j=3;        else if(strcmp(b,"four")==0) j=4;        else if(strcmp(b,"five")==0) j=5;        else if(strcmp(b,"six")==0) j=6;        else if(strcmp(b,"seven")==0) j=7;        else if(strcmp(b,"eight")==0) j=8;        else if(strcmp(b,"nine")==0) j=9;        m=m*10+j;        getchar();        scanf("%s",b);      }      if(n==0&&m==0)        break;      else s=n+m;        printf("%d\n",s);    }    return 0;} 

0 0
原创粉丝点击