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 ...
随机推荐
- chrome浏览器访问Google的插件“谷歌访问插件”以及常用插件
1.解决新版谷歌浏览器无法从该网站添加应用.拓展程序和用户脚本 1.在Google Chrome浏览器的桌面快捷方式上鼠标右键,选择属性(R). 2. 在目标(T)后添加参数 --enable-e ...
- 张高兴的 .NET Core IoT 入门指南:(二)GPIO 的使用
什么是 GPIO GPIO 是 General Purpose Input Output 的缩写,即"通用输入输出". Raspberry Pi 有两行 GPIO 引脚, Rasp ...
- npm WARN unmet dependency问题的解决方法
remove node_modules $ rm -rf node_modules/ run $ npm cache clean 详见这里: http://stackoverflow.com/ques ...
- ICP点云配准原理及优化
ICP算法简介 根据点云数据所包含的空间信息,可以直接利用点云数据进行配准.主流算法为最近迭代算法(ICP,Iterative Closest Point),该算法是根据点云数据首先构造局部几何特征, ...
- 二、git版本回退
查看历史版本提交记录 git log git log --pretty=oneline Git用 HEAD表示当前版本 commit id(版本号),也就是最新的提交e4aa53d...43ae6f6 ...
- MySQL多实例.md
MySQL5.7多实例配置 数据库实例1配置文件 # cat /etc/my.cnf [mysqld] datadir=/data/mysql port=3306 socket=/tmp/mysql. ...
- python第三十课--异常(异常处理定义格式和常见类型)
演示: 1).异常处理的定义格式: 2).常见的运行时异常类型: try: print(10/0) num=int('132a') except Exception as e: print('出错了. ...
- 使用vs2010编译lua5.1源代码生成lua.lib
版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/wangbin_jxust/article/details/37557807 一.打开vs2010 二 ...
- [AHOI2014/JSOI2014]支线剧情
题目 有源汇上下界最小费用可行流 首先注意到要求是每一条边都经过至少一次,所以对于每一条边我们设成\([1,\infty]\)就好了 另外所有点都能结束剧情,所有点都要向汇点\(t\)连一条\([0, ...
- MP实战系列(十三)之批量修改操作(前后台异步交互)
MyBatis的批量操作其实同MyBatis基本是一样的.并无多大区别,要说区别,除了封装的方法之外,主要就是注解方面的区别,比如@TableId.@TableField.@TableName等等区别 ...