• POJ 2121


    http://poj.org/problem?id=2121

    一道字符串的转换的题目。

    题意:就是把那个英文数字翻译成中文。

    思路:首先打表,然后把每一个单独的单词分离出来,在组合相加相乘。

     1 #include <stdio.h>
     2 #include <string.h>
     3 
     4 struct trans{
     5     char eng[10];
     6     int num;
     7 }s[40];
     8 
     9 int main(){
    10 //    freopen("in.txt","r",stdin);
    11     strcpy(s[0].eng,"zero"),      s[0].num = 0;
    12     strcpy(s[1].eng,"one"),       s[1].num = 1;
    13     strcpy(s[2].eng,"two"),       s[2].num = 2;
    14     strcpy(s[3].eng,"three"),     s[3].num = 3;
    15     strcpy(s[4].eng,"four"),      s[4].num = 4;
    16     strcpy(s[5].eng,"five"),      s[5].num = 5;
    17     strcpy(s[6].eng,"six"),       s[6].num = 6;
    18     strcpy(s[7].eng,"seven"),     s[7].num = 7;
    19     strcpy(s[8].eng,"eight"),     s[8].num = 8;
    20     strcpy(s[9].eng,"nine"),      s[9].num = 9;
    21     strcpy(s[10].eng,"ten"),      s[10].num= 10;
    22     strcpy(s[11].eng,"eleven"),   s[11].num= 11;
    23     strcpy(s[12].eng,"twelve"),   s[12].num= 12;
    24     strcpy(s[13].eng,"thirteen"), s[13].num= 13;
    25     strcpy(s[14].eng,"fourteen"), s[14].num= 14;
    26     strcpy(s[15].eng,"fifteen"),  s[15].num= 15;
    27     strcpy(s[16].eng,"sixteen"),  s[16].num= 16;
    28     strcpy(s[17].eng,"seventeen"),s[17].num= 17;
    29     strcpy(s[18].eng,"eighteen"), s[18].num= 18;
    30     strcpy(s[19].eng,"nineteen"), s[19].num= 19;
    31     strcpy(s[20].eng,"twenty"),   s[20].num= 20;
    32     strcpy(s[21].eng,"thirty"),   s[21].num= 30;
    33     strcpy(s[22].eng,"forty"),    s[22].num= 40;
    34     strcpy(s[23].eng,"fifty"),    s[23].num= 50;
    35     strcpy(s[24].eng,"sixty"),    s[24].num= 60;
    36     strcpy(s[25].eng,"seventy"),  s[25].num= 70;
    37     strcpy(s[26].eng,"eighty"),    s[26].num= 80;
    38     strcpy(s[27].eng,"ninety" ),   s[27].num= 90;
    39     strcpy(s[29].eng,"hundred"),  s[29].num= 100;
    40     strcpy(s[30].eng,"thousand"), s[30].num= 1000;
    41     strcpy(s[31].eng,"million"),  s[31].num= 1000000;
    42     strcpy(s[28].eng,"negative"); s[28].num= -1;
    43     char a[200];
    44     while(gets(a))
    45     {
    46         if(strlen(a)==0) break;
    47         char tmp[50]={0};
    48         int ans=0,flog=0,sum=0,x=1;
    49         int len=strlen(a);
    50         for(int i=0,k=0;i<len;i++)
    51         {
    52             if(a[i]!=' ') tmp[k++]=a[i];
    53             if(a[i]==' '||i==len-1){
    54                 k=0;
    55                 flog=1;
    56                 for(int m=0;m<=31;m++){
    57                     if(strcmp(s[m].eng,tmp)==0){
    58                             if(m==28) {
    59                                 x=-1;
    60                                 continue;
    61                             }
    62                             if(m<=27) sum+=s[m].num;
    63                             if(m==29) sum*=s[m].num;
    64                             if(m>=30) {
    65                                 ans+=sum*s[m].num;     
    66                                 sum=0;
    67                             }
    68                             break;
    69                     }
    70                 }
    71             }
    72             if(flog==1){
    73                 memset(tmp,0,sizeof(tmp));
    74                 flog=0;
    75             }
    76         }
    77         printf("%d
    ",(ans+sum)*x);
    78     }
    79     return 0;
    80 }
  • 相关阅读:
    Spine(2D骨骼动画)
    UpdatePanel的用法
    Windows7下的免费虚拟机(微软官方虚拟机)
    android ViewPager具体解释
    与Scheme共舞
    Binder机制1---Binder原理介绍
    HDU 2853 Assignment(KM最大匹配好题)
    微信公众平台java开发具体解释(project代码+解析)
    怎样绕过oracle listener 监听的password设置
    IOS成长之路-Nsstring中搜索方法rangeOfString
  • 原文地址:https://www.cnblogs.com/Tree-dream/p/5699431.html
Copyright © 2020-2023  润新知