A + B

A + B

Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other)
Total Submission(s) : 52   Accepted Submission(s) : 17
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
3 90 96
 
Source
浙大计算机研究生复试上机考试-2005年
 
 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 #include <string.h>
 4 int main()
 5 {
 6     char a[30],d[30];
 7     int b[30],sum,i,j,k,K,sign,z;
 8     while(gets(a))
 9     {
10         k=strlen(a);
11         for(i=0,sign=1;i<k;i++)
12         {
13           if(a[i]==' ')
14           {
15               a[i]='';
16               sign++;
17           }
18         }
19         for(j=0,i=0;j<sign;j++,i++)
20         {
21             for(z=0,i;a[i]!='';z++,i++)
22                 d[z]=a[i];
23             d[z]='';
24             if(strcmp(d,"one")==0)
25                 b[j]=1;
26             else if(strcmp(d,"two")==0)
27                 b[j]=2;
28             else if(strcmp(d,"three")==0)
29                 b[j]=3;
30             else if(strcmp(d,"four")==0)
31                 b[j]=4;
32             else if(strcmp(d,"five")==0)
33                 b[j]=5;
34             else if(strcmp(d,"six")==0)
35                 b[j]=6;
36             else if(strcmp(d,"seven")==0)
37                 b[j]=7;
38             else if(strcmp(d,"eight")==0)
39                 b[j]=8;
40             else if(strcmp(d,"nine")==0)
41                 b[j]=9;
42             else if(strcmp(d,"zero")==0)
43                 b[j]=0;
44             else if(d[0]=='+')
45                 {K=j;continue;}
46             else if(d[0]=='=')
47                 if(j==3)
48                 {
49                     if(b[0]!=0||b[2]!=0)
50                         printf("%d
",b[0]+b[2]);
51                     else
52                         return;
53                 }
54                 else if(j==4)
55                 {
56                         if(K==2)
57                             if(b[0]*10+b[1]!=0||b[3]!=0)
58                                 printf("%d
",b[0]*10+b[1]+b[3]);
59                             else
60                                 return;
61                         else if(K==1)
62                             if(b[0]!=0||b[2]*10!=0+b[3]!=0)
63                                 printf("%d
",b[0]+b[2]*10+b[3]);
64                             else
65                                 return;
66                 }
67                 else
68                 {
69                     if(b[0]*10+b[1]!=0||b[3]*10+b[4]!=0)
70                         printf("%d
",b[0]*10+b[1]+b[3]*10+b[4]);
71                     else
72                         return;
73                 }
74 
75         }
76     }
77     return 0;
78 }
View Code
转载请备注:
**************************************
* 作者: Wurq
* 博客: https://www.cnblogs.com/Wurq/
* Gitee: https://gitee.com/wurq
**************************************
原文地址:https://www.cnblogs.com/Wurq/p/3750231.html