The 5th Zhejiang Provincial Collegiate Programming Contest---ProblemG:Give Me the Number
2016-02-20 12:48
411 查看
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2971
题意:将输入的英文数字表达转化为阿拉伯数字。
题意:将输入的英文数字表达转化为阿拉伯数字。
#include<bits/stdc++.h> using namespace std; char aa[30][10]= {"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" }; int bb[28]= {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,30,40,50,60,70,80,90}; char cc[300][20]; int main() { int t; char s[250]; scanf("%d",&t); getchar();//先吃掉t后面的回车 while(t--) { memset(s,0,sizeof(s)); memset(cc,0,sizeof(cc)); gets(s); int num=0,k=0; int len=strlen(s); for(int i=0; i<len; i++) { if(i>=1&&s[i]==' '&&s[i-1]!=' ') { num++;//在’ ‘前算上一个字符串 k=0; continue; } if(s[i]!=' ') cc[num][k++]=s[i];//装入一个字符串 } int sum1=0,sum2=0; int j; //有前至后读入字符串 for(int i=0; i<=num; i++) { for(j=0; j<28; j++) { if(strcmp(cc[i],aa[j])==0) { sum1+=bb[j]; break; } } if(j=28) { if(strcmp(cc[i],"and")==0) continue; if(strcmp(cc[i],"thousand")==0) { sum1*=1000; sum2+=sum1; sum1=0; } else if(strcmp(cc[i],"hundred")==0) sum1*=100; else if(strcmp(cc[i],"million")==0) { sum1*=1000000; sum2+=sum1; sum1=0; } } } printf("%d\n",sum2+sum1); } return 0; }//善于使用strcmp函数,其实想到就很简单了
相关文章推荐
- bzoj 2754 [SCOI2012]喵星球上的点名(后缀数组)
- Sequence operation(线段树区间多种操作)
- 程序员面试金典 1.2 原串翻转
- Android GridView实现自适应正方形
- 编程中的正交原则
- java web面试题,收集
- ZOJ-2975-Kinds of Fuwas【5th浙江省赛】【暴力】
- 数据包从源主机到达目标主机的过程
- java链表初步学习
- 4-题目1023:EXCEL排序
- (转)数据包从源主机到达目标主机的过程
- linux下报错/usr/bin/env: node: 没有那个文件或目录
- 同 一个页面,不同请求路径,如何根据实际场景写JS
- IT程序员是否只吃青春饭呢?
- cocos2d-x新手学习之Helloworld(第三篇)[版本号:cocos2d-x-3.1.1]
- 【SPOJ-BTCODE_A】Traversing Grid【GCD】
- ORMLite 使用(网络数据存储到数据库)
- FPGA 常用 状态机
- 16-02-20 android.content.res.Resources$NotFoundException
- 汉诺塔问题