题意就是给出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)-字符串处理的更多相关文章

  1. 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 ...

  2. 【PAT甲级】1082 Read Number in Chinese (25 分)

    题意: 输入一个九位整数,输出它的汉字读法(用拼音表示). trick: 字符串数组""其实会输出一个空格,而不是什么都不输出,导致测试点0和4格式错误. AAAAAccepted ...

  3. 1082 Read Number in Chinese (25分)

    // 1082.cpp : 定义控制台应用程序的入口点. // #include <iostream> #include <string> #include <vecto ...

  4. PAT (Advanced Level) 1082. Read Number in Chinese (25)

    模拟题. #include<cstdio> #include<cstring> #include<cmath> #include<vector> #in ...

  5. pat1082. Read Number in Chinese (25)

    1082. Read Number in Chinese (25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yu ...

  6. 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 ...

  7. 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 ...

  8. 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 ...

  9. 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 ...

随机推荐

  1. yum安装某个包出现冲突的情况

    yum安装是非常方便的,可以自动解决依赖问题,但是有时候我们安装包会出现冲突,这个时候我们就要查找是哪些包与哪些包出现冲突,然后再针对性的解决问题. 一般来说起冲突的包会报出来,主要为两点 1.包与包 ...

  2. 基于CNN网络的汉字图像字体识别及其原理

    现代办公要将纸质文档转换为电子文档的需求越来越多,目前针对这种应用场景的系统为OCR系统,也就是光学字符识别系统,例如对于古老出版物的数字化.但是目前OCR系统主要针对文字的识别上,对于出版物的版面以 ...

  3. 利用Chrome浏览器的开发者工具截取整个页面

    ①打开Chrome浏览器的开发者工具: 快捷键: command + Alt + I (Mac). Ctrl + shift + I (Windows) 或者: 鼠标右键 -> 弹出菜单中选择 ...

  4. 极限编程核心价值:沟通(Communication)

    原文:https://deviq.com/communication 极限编程核心价值:简单(Simplicity) 极限编程核心价值:沟通(Communication) 极限编程核心价值:反馈(Fe ...

  5. 加载驱动三种execute

    executeQuery executeUpdate executeQueryBatch

  6. Spring boot整合Hive

    使用Spring boot整合Hive,在启动Spring boot项目时,报出异常: java.lang.NoSuchMethodError: org.eclipse.jetty.servlet.S ...

  7. HTML5API之获取地理位置详解

    在使用地理位置API之前先来了解一下什么是经度和纬度以及地理位置获取的原理 首先经度指的是南北极的连接线,纬度指的是东西的连接线 地理位置的获取原理是通过IP地址(基于ISP记录,能够知道这个IP地址 ...

  8. python第三十九课——面向对象(二)之初始化属性

    设计Car类,初始化属性speed,提供一个run函数 import time class Car: def __init__(self,speed): self.speed=speed #将Road ...

  9. python is、==区别;with;gil;python中tuple和list的区别;Python 中的迭代器、生成器、装饰器

    1. is 比较的是两个实例对象是不是完全相同,它们是不是同一个对象,占用的内存地址是否相同 == 比较的是两个对象的内容是否相等 2. with语句时用于对try except finally 的优 ...

  10. python面试题库——3数据库和缓存

    第三部分 数据库和缓存(46题) 列举常见的关系型数据库和非关系型都有那些? 关系型数据库: Oracle.DB2.Microsoft SQL Server.Microsoft Access.MySQ ...