zoukankan      html  css  js  c++  java
  • 宇姐的英语小本

    Description

    宇姐是个爱学习的好孩纸,尤其喜欢英歌历史,但是对于数字的英文单词,他总是傻傻分不清,于是他把一些常用或者典型的单词都按照自己喜欢的方式整理到了自己的小本本上。有天,珲姐发现了这个秘密,想借他的本本学习一下这些单词,却发现看不懂这些单词都表示数字几,你能帮帮他吗? 注意:所表示的数字-999,999,999≤N≤999,999,999。宇姐的本本上可能有:negative,zero,one,two,three,four,five,six,seven,eight,nine,ten,eleven,twelve,thirteen,fourteen,fifteen,sixteen,seventeen,eighteen,nineteen,twenty,thirty,forty,fifty,sixty,seventy,eighty,ninety,hundred,thousand,million。

    Input

    输入一行英文,即宇姐本本上的需要你翻译的部分。 请注意: 1.负数前面有词negative; 2.当能用thousand的时候,将不用hundred。例如:1500将写为“one thousand five hundred”,而不是“fifteen hundred”。

    Output

    输出单行结果,输出对应的值。

    Sample Input

    negative seven hundred twenty nine
    one million one hundred one
    eight hundred fourteen thousand twenty two

    Sample Output

    -729
    1000101
    814022



    解题思路:这道题很有趣,英文代表的数字转换成阿拉伯数字,不怕麻烦的话可以使用一大堆if来判读,但是我们不可能使用这么low的方法,其实可以将
    英文单词存进数组之中,就先之前做过的键盘题一样将每一个得到的单词和数组中的单词一一比对。另外,我们会发现hundred,thousand,million,这些
    单词的存在有着特殊的意义,它们可以看成是一个标志,可以用来和它们之前的数字组成数,最终统计到最后得到的数中。

    上代码:
     1 #include<stdio.h>
     2 #include<string.h>
     3 int main()
     4 {
     5     char a[32][50]= {"zero","one","two","three","four","five","six","seven",
     6                      "eight","nine","ten","eleven","twelve","thirteen","fourteen",
     7                      "fifteen","sixteen","seventeen","eighteen","nineteen",
     8                      "twenty","thirty","forty","fifty","sixty","seventy","eighty","ninety","hundred",
     9                      "thousand","million","negative"
    10                     };
    11     int  len1,k,j,i,flag=1,sum,acc,z;
    12     char s[1000],x[110][110];
    13     gets(s);
    14     len1=strlen(s);
    15     k=0,j=0;
    16     sum=0;
    17     acc=0;
    18     for(i=0; i<=len1; i++) ///拆数
    19     {
    20         if(s[i]!=' '&&s[i]!='')
    21         {
    22             x[j][k++]=s[i];
    23         }
    24         else if((s[i]==' '&&s[i+1]!= ' ')||(s[i]==''))
    25         {
    26             x[j][k]='';
    27             j++;
    28             k=0;
    29         }
    30     }
    31     for(z=0; z<j; z++)
    32     {
    33         for(i=0; i<32; i++)
    34         {
    35             if(strcmp(x[z],a[i])==0)
    36                 break;
    37         }
    38          if(i<=20)
    39         {
    40             acc=acc+i;
    41         }
    42         else if(i>20&&i<=27)
    43         {
    44             acc=acc+(i-18)*10;
    45         }
    46         else if(i==28)
    47         {
    48             acc=acc*100;
    49         }
    50         else if(i==29)
    51         {
    52             sum=sum+acc*1000;
    53             acc=0;
    54         }
    55         else if(i==30)
    56         {
    57             sum=sum+acc*1000000;
    58             acc=0;
    59         }
    60         else if(i==31)
    61         {
    62             flag=-1;
    63         }
    64     }
    65     printf("%d
    ",(sum+acc)*flag);
    66     return 0;
    67 }
    
    
    
    
    
  • 相关阅读:
    DiskFileUpload上传与Spring的CommonsMultipartResolver上传对比
    ajax请求jesery接口无法获取参数的问题解决方案
    java乱码问题总结
    indiGolog的安装
    hadoop启动步骤
    ubuntu修改默认jdk
    ubuntu 安装 ssh
    rabbitmq五种模式详解(含实现代码)
    终于可以像使用 Docker 一样丝滑地使用 Containerd 了
    Docker安装Nacos动态服务发现、配置和服务管理平台
  • 原文地址:https://www.cnblogs.com/wkfvawl/p/8877523.html
Copyright © 2011-2022 走看看