1082. Read Number in Chinese (25)-字符串处理
题意就是给出9位以内的数字,按照汉子的读法读出来。
读法请看下方的几个例子:
5 0505 0505 伍亿零伍佰零伍万零伍佰零伍
5 5050 5050 伍亿伍仟零伍拾万伍仟零伍拾 (原本我以为这个是读:伍亿伍仟零伍拾万"零"伍仟零伍拾)
5 0550 0055 伍亿零伍佰伍拾万零伍拾伍
5 5005 5500 伍亿伍仟零伍万伍仟伍佰
5 5500 0055 伍亿伍仟伍
按四位四位的分开处理,具体见代码~
#include <iostream>
#include <cstdio>
#include <string.h>
#include <algorithm>
using namespace std;
char number[];
bool first=true;
char str1[][]={"Fu","Yi","Wan"};
char str2[][]={"","Shi","Bai","Qian"};
char digit[][]={"ling","yi","er","san","si","wu","liu","qi","ba","jiu"}; /*
cnt表示该位的右边还剩下left-1位(包括该位)
read是4位4位的读
*/
void read(int idx,int left){
if(left==)
return;
if(number[idx]==''){
bool allZero=true; //判断接下来的是否都是0,若都是就不需要读ling
int cnt=;
for(int i=idx;i<idx+left;i++){
if(number[i]!=''){
allZero=false;
break;
}
else
cnt++;
}
if(!allZero){
printf(" ling");
read(idx+cnt,left-cnt);
}
}
else{
if(!first)
printf(" ");
else
first=false;
printf("%s",digit[number[idx]-'']);
if(left>)
printf(" %s",str2[left-]);
read(idx+,left-);
}
}
int main()
{
first=true;
scanf("%s",number);
int len=strlen(number);
int left=len;
int idx=;
int a=atoi(number);
//注意0这个特例!!!,没有考虑这个导致WA
if(a==){
printf("ling");
return ;
}
if(number[]=='-'){
first=false;
printf("Fu");
left--;
idx++;
}
if(left>=){
if(!first){
printf(" ");
}
else
first=false;
printf("%s",digit[number[idx]-'']);
printf(" Yi");
left--;
idx++;
}
//万位上的四位
if(<=left && left<=){
read(idx,left-);
idx+=left-;
left=;
printf(" Wan");
}
//低位上的四位
if(<=left<=){
read(idx,left);
}
return ;
}
1082. Read Number in Chinese (25)-字符串处理的更多相关文章
- 1082. Read Number in Chinese (25)
题目如下: Given an integer with no more than 9 digits, you are supposed to read it in the traditional Ch ...
- 【PAT甲级】1082 Read Number in Chinese (25 分)
题意: 输入一个九位整数,输出它的汉字读法(用拼音表示). trick: 字符串数组""其实会输出一个空格,而不是什么都不输出,导致测试点0和4格式错误. AAAAAccepted ...
- 1082 Read Number in Chinese (25分)
// 1082.cpp : 定义控制台应用程序的入口点. // #include <iostream> #include <string> #include <vecto ...
- PAT (Advanced Level) 1082. Read Number in Chinese (25)
模拟题. #include<cstdio> #include<cstring> #include<cmath> #include<vector> #in ...
- pat1082. Read Number in Chinese (25)
1082. Read Number in Chinese (25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yu ...
- A1082 Read Number in Chinese (25 分)
1082 Read Number in Chinese (25 分) Given an integer with no more than 9 digits, you are supposed t ...
- 1082 Read Number in Chinese (25 分)
1082 Read Number in Chinese (25 分) Given an integer with no more than 9 digits, you are supposed to ...
- PAT 1082 Read Number in Chinese[难]
1082 Read Number in Chinese (25 分) Given an integer with no more than 9 digits, you are supposed to ...
- A1082 Read Number in Chinese (25)(25 分)
A1082 Read Number in Chinese (25)(25 分) Given an integer with no more than 9 digits, you are suppose ...
随机推荐
- NOIP2018考前抱佛脚——搜索复习
目录 搜索 DFS 例1 P1101 单词方阵 题目描述 输入输出格式 输入输出样例 标程 例2 P1605 迷宫 题目背景 输入输出格式 输入输出样例 标程 例3 P1019 单词接龙 题目描述 输 ...
- Oracle物化视图的创建及使用(一
Oracle物化视图的创建及使用 http://blog.csdn.net/tegwy/article/details/8935058 先看简单创建语句: create materialized ...
- BZOJ2580:[USACO]Video Game(AC自动机,DP)
Description Bessie is playing a video game! In the game, the three letters 'A', 'B', and 'C' are the ...
- 常见的CSS属性和值CascadingStyleSheets
字体文本背景位置边框列表其他 CSS中修饰字体的属性 属 性 描 述 属 性 值 font-family 字体族科 任意字体族科名称都可以使用例如Times.serif等,而且多个族科 ...
- JS实现拖动div层移动
JS实现拖动div层移动 在谈到拖动div层之前,我们有必要来了解下 下面JS几个属性的区别---- pageX,pageY,layerX,layerY,clientX,clientY,screen ...
- JS对表格排序(支持对序号,数字,字母,日期)
JS对表格排序(支持对序号,数字,字母,日期) 前不久看到淘宝组件有"对表格排序的插件" 如想要看 可以看这个地址 http://gallery.kissyui.com/KSort ...
- struts2_maven_learning
以下为学习maven struts2 的学习过程,现记录如下. 1.创建一个完善的maven程序 maven:(jar) 1)maven project 2)facet 3)pom.xml,depen ...
- Junit测试中找不到junit.framework.testcase
在使用Junit进行测试时,出现如下问题: 找不到junit.framework.testcase 解决方法: 选中项目->属性->Java构建路径->库->添加外部jar 在 ...
- 2017-2018-2 《网络对抗技术》 20155310 第二周 Exp1 PC平台逆向破解(5)M
2017-2018-2 <网络对抗技术> 20155310 第二周 Exp1 PC平台逆向破解(5)M 一.实践目标 1.1实践介绍 本次实践的对象是一个名为pwn1的linux可执行文件 ...
- Struts2将图片输出到页面
在做CRUD的过程中,添加页面是个表单,表单里面有一项是上传头像文件.这样表单提交后,头像文件上传了. 但这个文件存的地址是本地硬盘的一个文件夹.在编辑页面要做这个头像的回显的话,就需 ...