2494 - 英文数字
时间限制 : 1 秒
内存限制 : 128 MB
在这个问题中,你将会给出一个或多个用英文表示的数。你的任务就是把这些英文标识的数翻译为阿拉伯数字。
给定数字的范围从-999,999,999到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,sixty,seventy,eighty,ninety,hundred,thousand,million.
题目输入
输入注意事项:
1、负数将会被描述为negative。
2、当“thousand”可以使用时,“hundred”不能用。例如:1500会被描述为“one thousand five hundred”而不是"fifteen hundred"
结尾以空行结束
题目输出
每个结果占一行
输入/输出样例
输入格式
six negative seven hundred twenty nine one million one hundred one eight hundred fourteen thousand twenty two
输出格式
6 -729 1000101 814022
C语言解答
#include<stdio.h> #include<string.h> int main() { char s[10],ch; int sum=0,ans=0; while(scanf("%s",s)!=EOF) { if(!strcmp(s,"negative")) printf("-"); else if(!strcmp(s,"zero")) sum+=0; else if(!strcmp(s,"one")) sum+=1; else if(!strcmp(s,"two")) sum+=2; else if(!strcmp(s,"three")) sum+=3; else if(!strcmp(s,"four")) sum+=4; else if(!strcmp(s,"five")) sum+=5; else if(!strcmp(s,"six")) sum+=6; else if(!strcmp(s,"seven")) sum+=7; else if(!strcmp(s,"eight")) sum+=8; else if(!strcmp(s,"nine")) sum+=9; else if(!strcmp(s,"ten")) sum+=10; else if(!strcmp(s,"eleven")) sum+=11; else if(!strcmp(s,"twelve")) sum+=12; else if(!strcmp(s,"thirteen")) sum+=13; else if(!strcmp(s,"fourteen")) sum+=14; else if(!strcmp(s,"fifteen")) sum+=15; else if(!strcmp(s,"sixteen")) sum+=16; else if(!strcmp(s,"seventeen"))sum+=17; else if(!strcmp(s,"eighteen")) sum+=18; else if(!strcmp(s,"nineteen")) sum+=19; else if(!strcmp(s,"twenty")) sum+=20; else if(!strcmp(s,"thirty")) sum+=30; else if(!strcmp(s,"forty")) sum+=40; else if(!strcmp(s,"fifty")) sum+=50; else if(!strcmp(s,"sixty")) sum+=60; else if(!strcmp(s,"seventy")) sum+=70; else if(!strcmp(s,"eighty")) sum+=80; else if(!strcmp(s,"ninety")) sum+=90; else if(!strcmp(s,"hundred")) sum*=100; else if(!strcmp(s,"thousand")) { ans+=sum*1000; sum=0; } else if(!strcmp(s,"million")) { ans+=sum*1000000; sum=0; } ch=getchar(); if(ch=='\n') { printf("%d\n",ans+sum); sum=0; ans=0; } } return 0; }
C++解答
#include<iostream> #include<cstdio> #include<cstring> #define maxn 100 char s[maxn]; int sum=0,ans=0; int main() { while(scanf("%s",s)!=EOF) { if(!strcmp(s,"negative"))printf("-"); else if(!strcmp(s,"zero"))sum+=0; else if(!strcmp(s,"one"))sum+=1; else if(!strcmp(s,"two"))sum+=2; else if(!strcmp(s,"three"))sum+=3; else if(!strcmp(s,"four"))sum+=4; else if(!strcmp(s,"five"))sum+=5; else if(!strcmp(s,"six"))sum+=6; else if(!strcmp(s,"seven"))sum+=7; else if(!strcmp(s,"eight"))sum+=8; else if(!strcmp(s,"nine"))sum+=9; else if(!strcmp(s,"ten"))sum+=10; else if(!strcmp(s,"eleven"))sum+=11; else if(!strcmp(s,"twelve"))sum+=12; else if(!strcmp(s,"thirteen"))sum+=13; else if(!strcmp(s,"fourteen"))sum+=14; else if(!strcmp(s,"fifteen"))sum+=15; else if(!strcmp(s,"sixteen"))sum+=16; else if(!strcmp(s,"seventeen"))sum+=17; else if(!strcmp(s,"eighteen"))sum+=18; else if(!strcmp(s,"nineteen"))sum+=19; else if(!strcmp(s,"twenty"))sum+=20; else if(!strcmp(s,"thirty"))sum+=30; else if(!strcmp(s,"forty"))sum+=40; else if(!strcmp(s,"fifty"))sum+=50; else if(!strcmp(s,"sixty"))sum+=60; else if(!strcmp(s,"seventy"))sum+=70; else if(!strcmp(s,"eighty"))sum+=80; else if(!strcmp(s,"ninety"))sum+=90; else if(!strcmp(s,"hundred")) { sum*=100; } else if(!strcmp(s,"thousand")) { ans+=sum*1000; sum=0; } else if(!strcmp(s,"million")) { ans+=sum*1000000; sum=0; } char ch=getchar(); if(ch=='\n') { printf("%d\n",ans+sum); sum=0; ans=0; } } return 0; }