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 ...
随机推荐
- redis性能测试工具的使用
在redis安装完成后会生成一个bin的目录,在这个目录中有一个 redis-benchmark 的文件脚本工具,通过执行这个工具进行redis的性能测试. bash #执行这个脚本后脚本会自动运行r ...
- python-json模块扩展
sort_keys=True, indent=4, separators=(',', ': ') 格式 json.dumps(response,sort_keys=True, indent=4, se ...
- pyspider爬取数据存入es--1.安装驱动
跟使用mysql一样,不安装es驱动的话,也会触发模块找不到的错误 ImportError: No module named elasticsearch 通过pip安装 pip install ela ...
- 使用iozone进行磁盘读写性能测试
对于很多GIS工程师,经常需要对系统的磁盘性能进行测试,为了排查问题或者帮助用户进行系统设计. IOZone这个磁盘性能测试工具就是一个很方便的辅助工具. 下面就以个测试共享目录的读写性能为例,说明其 ...
- leetcode-876 Middle of the Linked List
Given a non-empty, singly linked list with head node head, return a middle node of linked list. If t ...
- JAVA框架Struts2 servlet API
一:servlet API 1)完全解耦接口: 使用ActionContext类进行相关操作: package jd.com.actioncontex; import com.opensymphony ...
- 通过cgroup给docker的CPU和内存资源做限制
1.cpu docker run -it --cpu-period=100000 --cpu-quota=2000 ubuntu /bin/bash 相当于只能使用20%的CPU 在每个100ms的时 ...
- python获得命令行参数的方法
#encoding=utf8 import sys reload(sys) sys.setdefaultencoding("utf8") print "参数名: &quo ...
- zabbix部署(1)(lnmp转)
1.lnmp 首先 确保CentOS7上网络配置正确,可以正常访问互联网. 确保已经关闭了iptables. CentOS7上是firewall,关闭命令: 1 2 # systemctl stop ...
- 何谓BLDC电机?BLDC电机是如何旋转的?
何谓BLDC电机?BLDC电机是如何旋转的?