HDU 1228(字符串处理)

题意是将所给算式求出结果。

用的方法非常麻烦,开始没考虑到零也需要处理,以为遇上零直接跳过即可,知道发现零可以占位,比如 one zero 值为 10 而不是 1……

代码如下:

  1 #include <bits/stdc++.h>
  2 using namespace std;
  3 int main()
  4 {
  5     char s1[10],s2[10];
  6     int a1,a2;
  7     while(1)
  8     {
  9         a1 = a2 = 0;
 10         while(scanf("%s",s1) && strcmp(s1,"+"))
 11         {
 12                 if(strcmp(s1,"one")==0)
 13                 {
 14                     a1 = a1*10+1;
 15                 }
 16                 else if(strcmp(s1,"two")==0)
 17                 {
 18                     a1 = a1*10+2;
 19                 }
 20                 else if(strcmp(s1,"three")==0)
 21                 {
 22                     a1 = a1*10+3;
 23                 }
 24                 else if(strcmp(s1,"four")==0)
 25                 {
 26                     a1 = a1*10+4;
 27                 }
 28                 else if(strcmp(s1,"five")==0)
 29                 {
 30                     a1 = a1*10+5;
 31                 }
 32                 else if(strcmp(s1,"six")==0)
 33                 {
 34                     a1 = a1*10+6;
 35                 }
 36                 else if(strcmp(s1,"seven")==0)
 37                 {
 38                     a1 = a1*10+7;
 39                 }
 40                 else if(strcmp(s1,"eight")==0)
 41                 {
 42                     a1 = a1*10+8;
 43                 }
 44                 else if(strcmp(s1,"nine")==0)
 45                 {
 46                     a1 = a1*10+9;
 47                 }
 48                 else{
 49                     a1 = a1*10;
 50                 }
 51         }
 52         while(scanf("%s",s2) && strcmp(s2,"="))
 53         {
 54                 if(strcmp(s2,"one")==0)
 55                 {
 56                     a2 = a2*10+1;
 57                 }
 58                 else if(strcmp(s2,"two")==0)
 59                 {
 60                     a2 = a2*10+2;
 61                 }
 62                 else if(strcmp(s2,"three")==0)
 63                 {
 64                     a2 = a2*10+3;
 65                 }
 66                 else if(strcmp(s2,"four")==0)
 67                 {
 68                     a2 = a2*10+4;
 69                 }
 70                 else if(strcmp(s2,"five")==0)
 71                 {
 72                     a2 = a2*10+5;
 73                 }
 74                 else if(strcmp(s2,"six")==0)
 75                 {
 76                     a2 = a2*10+6;
 77                 }
 78                 else if(strcmp(s2,"seven")==0)
 79                 {
 80                     a2 = a2*10+7;
 81                 }
 82                 else if(strcmp(s2,"eight")==0)
 83                 {
 84                     a2 = a2*10+8;
 85                 }
 86                 else if(strcmp(s2,"nine")==0)
 87                 {
 88                     a2 = a2*10+9;
 89                 }
 90                 else
 91                 {
 92                     a2 = a2*10;
 93                 }
 94         }
 95         if(a1==0 && a2==0)
 96             break;
 97 //        printf("a1:%d  a2:%d
",a1,a2);
 98         printf("%d
",a1+a2);
 99     }
100     return 0;
101 }
View Code
原文地址:https://www.cnblogs.com/Taskr212/p/10400644.html