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

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

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

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

 #include <stdio.h>
#include <string.h> struct trans{
char eng[];
int num;
}s[]; int main(){
// freopen("in.txt","r",stdin);
strcpy(s[].eng,"zero"), s[].num = ;
strcpy(s[].eng,"one"), s[].num = ;
strcpy(s[].eng,"two"), s[].num = ;
strcpy(s[].eng,"three"), s[].num = ;
strcpy(s[].eng,"four"), s[].num = ;
strcpy(s[].eng,"five"), s[].num = ;
strcpy(s[].eng,"six"), s[].num = ;
strcpy(s[].eng,"seven"), s[].num = ;
strcpy(s[].eng,"eight"), s[].num = ;
strcpy(s[].eng,"nine"), s[].num = ;
strcpy(s[].eng,"ten"), s[].num= ;
strcpy(s[].eng,"eleven"), s[].num= ;
strcpy(s[].eng,"twelve"), s[].num= ;
strcpy(s[].eng,"thirteen"), s[].num= ;
strcpy(s[].eng,"fourteen"), s[].num= ;
strcpy(s[].eng,"fifteen"), s[].num= ;
strcpy(s[].eng,"sixteen"), s[].num= ;
strcpy(s[].eng,"seventeen"),s[].num= ;
strcpy(s[].eng,"eighteen"), s[].num= ;
strcpy(s[].eng,"nineteen"), s[].num= ;
strcpy(s[].eng,"twenty"), s[].num= ;
strcpy(s[].eng,"thirty"), s[].num= ;
strcpy(s[].eng,"forty"), s[].num= ;
strcpy(s[].eng,"fifty"), s[].num= ;
strcpy(s[].eng,"sixty"), s[].num= ;
strcpy(s[].eng,"seventy"), s[].num= ;
strcpy(s[].eng,"eighty"), s[].num= ;
strcpy(s[].eng,"ninety" ), s[].num= ;
strcpy(s[].eng,"hundred"), s[].num= ;
strcpy(s[].eng,"thousand"), s[].num= ;
strcpy(s[].eng,"million"), s[].num= ;
strcpy(s[].eng,"negative"); s[].num= -;
char a[];
while(gets(a))
{
if(strlen(a)==) break;
char tmp[]={};
int ans=,flog=,sum=,x=;
int len=strlen(a);
for(int i=,k=;i<len;i++)
{
if(a[i]!=' ') tmp[k++]=a[i];
if(a[i]==' '||i==len-){
k=;
flog=;
for(int m=;m<=;m++){
if(strcmp(s[m].eng,tmp)==){
if(m==) {
x=-;
continue;
}
if(m<=) sum+=s[m].num;
if(m==) sum*=s[m].num;
if(m>=) {
ans+=sum*s[m].num;
sum=;
}
break;
}
}
}
if(flog==){
memset(tmp,,sizeof(tmp));
flog=;
}
}
printf("%d\n",(ans+sum)*x);
}
return ;
}

POJ 2121的更多相关文章

  1. 字符串处理,Poj(2121)

    题目链接:http://poj.org/problem?id=2121 差一点就WA哭了,主要是自己傻逼了. 思路: 遇到hundred,sum*100; 但是遇到thouthend,million, ...

  2. POJ 题目分类(转载)

    Log 2016-3-21 网上找的POJ分类,来源已经不清楚了.百度能百度到一大把.贴一份在博客上,鞭策自己刷题,不能偷懒!! 初期: 一.基本算法: (1)枚举. (poj1753,poj2965 ...

  3. (转)POJ题目分类

    初期:一.基本算法:     (1)枚举. (poj1753,poj2965)     (2)贪心(poj1328,poj2109,poj2586)     (3)递归和分治法.     (4)递推. ...

  4. poj分类

    初期: 一.基本算法:      (1)枚举. (poj1753,poj2965)      (2)贪心(poj1328,poj2109,poj2586)      (3)递归和分治法.      ( ...

  5. poj 题目分类(1)

    poj 题目分类 按照ac的代码长度分类(主要参考最短代码和自己写的代码) 短代码:0.01K--0.50K:中短代码:0.51K--1.00K:中等代码量:1.01K--2.00K:长代码:2.01 ...

  6. POJ题目分类(按初级\中级\高级等分类,有助于大家根据个人情况学习)

    本文来自:http://www.cppblog.com/snowshine09/archive/2011/08/02/152272.spx 多版本的POJ分类 流传最广的一种分类: 初期: 一.基本算 ...

  7. POJ题目分类(转)

    初期:一.基本算法:     (1)枚举. (poj1753,poj2965)     (2)贪心(poj1328,poj2109,poj2586)     (3)递归和分治法.     (4)递推. ...

  8. 【转载】图论 500题——主要为hdu/poj/zoj

    转自——http://blog.csdn.net/qwe20060514/article/details/8112550 =============================以下是最小生成树+并 ...

  9. POJ题目细究

    acm之pku题目分类 对ACM有兴趣的同学们可以看看 DP:  1011   NTA                 简单题  1013   Great Equipment     简单题  102 ...

随机推荐

  1. IE安全分析

    IE安全问题,这个话题似乎很古老了,但是问题又是层出不穷~ 对于IE的安全,我个人认为有两点需要关注,一个是上网的安全,二个是IE解析代码的安全 对于IE上网安全,这是最基本的,也是最常用的了 附上一 ...

  2. 工具,百度编辑器 UEditor 使用实例化

    <!DOCTYPE HTML> <html lang="en-US"> <head> <meta charset="UTF-8& ...

  3. C-函数与内存剖析

    功能,封装,调用 形参:定义函数时函数名后面中的参数,形式参数 实参:调用函数时传入的具体数据 return作用:1退出函数 2返回一个具体数值给调用者 返回值: 如果不明确声明返回值类型,默认就是i ...

  4. C# ManualResetEvent和AutoResetEvent 使用笔记

    一.两者区别 1.ManualResetEvent 调用一次Set()后将允许恢复所有被阻塞线程.需手动在调用WaitOne()之后调用Reset()重置信号量状态为非终止,然后再次调用WaitOne ...

  5. 再说vundle: 完全vim字符编程的四个必须插件 - zen coding 和emmet插件的使用

    一个常识: 基本上vim插件的配置文集都是放在对应插件目录 的/autoload/ plugin_name.vim 文件中的 有四个必要/必须的插件,实现vim完全的字符界面的编程: NERDTree ...

  6. 在linux下运行apt-get update 时,报错/var/lib/apt/lists/lock

    在运行apt-get update 时,报下面的错误: E: 无法获得锁 /var/lib/apt/lists/lock - open (11: Resource temporarily unavai ...

  7. Linux启动管理:grub

    1.grub中分区表示 Linux 中 /dev/sda1   在grub中为   hd0,0    代表第一个硬盘的第一个分区 Linux中 /dev/sdb3是扩展分区     在grub中为   ...

  8. oracle中的number类型

    number 数据类型 number (precision,scale) a)    precision表示数字中的有效位,如果没有指定precision的话,oracle将使用38作为精度: b)  ...

  9. 大熊君大话NodeJS之开篇------Why NodeJS(将Javascript进行到底)

    一,开篇分析 大家好啊,大熊君又来啦(*^__^*) 嘻嘻……,之前我写过一系列关于JS(OOP与设计模式)方面的文章,反响还好,其实这也是对我本人最大的鼓励,于是我决定我要将JavaScript进行 ...

  10. Linux下查看文件内容的命令

    查看文件内容的命令: cat     由第一行开始显示内容,并将所有内容输出 tac     从最后一行倒序显示内容,并将所有内容输出 more    根据窗口大小,一页一页的现实文件内容 less ...