题目

题意: 给定一个不超过9位的整数,你应该用传统的中文方式阅读它~ 如果是负的,首先输出“Fu”。 例如,-123456789被读作“Fu yi Yi er Qian san Bai si Shi wu Wan liu Qian qi Bai ba Shi jiu”。 注意:零(“ling”)必须根据中国传统正确处理。 例如,100800是“yi Shi Wan ling ba Bai”~

tip:模拟(反正我没做出来,转载

#include <iostream>
#include <string>
#include <vector>
using namespace std;
string num[10] = { "ling","yi", "er", "san", "si", "wu", "liu", "qi", "ba", "jiu" };
string c[6] = { "Ge","Shi", "Bai", "Qian", "Yi", "Wan" };
int J[] = {1, 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000};
vector<string> res;
int main() {int n;cin >> n;if (n == 0) {cout << "ling";return 0;}if (n < 0) {cout << "Fu ";n = -n;}int part[3];part[0]= n / 100000000;part[1]= (n % 100000000) / 10000;part[2] = n % 10000;bool zero = false; //是否在非零数字前输出合适的lingint printCnt = 0; //用于维护单词前没有空格,之后输入的单词都在前面加一个空格。for (int i = 0; i < 3; i++) {int temp = part[i]; //三个部分,每部分内部的命名规则都一样,都是X千X百X十Xfor (int j = 3; j >= 0; j--) {int curPos = 8 - i * 4 + j; //当前数字的位置if (curPos >= 9) continue; //最多九位数int cur = (temp / J[j]) % 10;//取出当前数字if (cur != 0) {if (zero) {printCnt++ == 0 ? cout<<"ling" : cout<<" ling";zero = false;}if (j == 0)printCnt++ == 0 ? cout << num[cur] : cout << ' ' << num[cur]; //在个位,直接输出elseprintCnt++ == 0 ? cout << num[cur] << ' ' << c[j] : cout << ' ' << num[cur] << ' ' << c[j]; //在其他位,还要输出十百千} else {if (!zero && j != 0 && n / J[curPos] >= 10) zero = true;   //注意100020这样的情况}}if (i != 2 && part[i]>0) cout << ' ' << c[i + 4]; //处理完每部分之后,最后输出单位,Yi/Wan}return 0;
}

1082 Read Number in Chinese相关推荐

  1. PAT甲级1082 Read Number in Chinese:[C++题解]字符串处理

    文章目录 题目分析 题目来源 题目分析 来源:acwing 分析 从后往前,四位数作为1组来处理.每组单位最多是十百千,组间单位是万和亿.以123456789为例,分成三组为1,2345,6789,下 ...

  2. 1082 Read Number in Chinese (25 分)【难 / 模拟 字符串】

    https://pintia.cn/problem-sets/994805342720868352/problems/994805385053978624 写的太垃圾,不想详细说,等有时间再写一个简洁 ...

  3. PAT甲级1082 Read Number in Chinese(JAVA版)

    本题考查 字符串处理 思路 除了0之外 数字1-9分别对应其小写拼音,另外当 "数组长度 - 数字所在数组索引" 单位 9 Yi 8.4 Qian 7.3 Bai 6.2 Shi ...

  4. PAT甲级题目翻译+答案 AcWing(字符串处理)

    1001 A+B Format (20 分) 题意 :将整数转换成标准格式 思路 :从后往前遍历字符串进行模拟,每三个数字加一个逗号,但不能是在最前面加逗号,也不能是加在负号后面 #include & ...

  5. PAT (Advanced Level) Practice 题解代码 - II (1051-1100)

    PAT PAT (Advanced Level) Practice - II(1051-1100) -------------------------------------------------- ...

  6. 【晴神宝典刷题路】codeup+pat 题解索引(更新ing

    记录一下每天的成果,看多久能刷完伐 codep pat乙级 pat甲级 c2 c/c++快速入门 <算法笔记>2.2小节--C/C++快速入门->顺序结构 例题1-1-1 按要求输出 ...

  7. 【PAT甲级】A1051-A1100刷题记录

    文章目录 (栈) A1051 Pop Sequence (25 分) 0.47 (静态链表) A1052 Linked List Sorting (25 分) 0.21 (静态树+先根遍历DFS) A ...

  8. 刷PAT甲级的各题思路、细节以及遇到的问题记录

    1001 A+B Format (20分) 因为一定会用到字符串,而string非常好用,但是用的时候一定要注意不能越界访问,否则会在运行时出现abort() has been called. 100 ...

  9. PAT题型分类 记录汇总

    这篇博客记录了我在跟着<算法笔记>以及习题册<算法笔记 上机实践指南>刷了PAT的题目之后的一些解题方法的总结与心得. 第三章 入门模拟 1. 简单模拟 一般解题思路 这一小节 ...

最新文章

  1. QT 中使用 OpenCv 的 CascadeClassifier 报错
  2. 查看删除的帐号的DN名称(活动目录快照配置管理系列六)
  3. SpringMVC启动后自动执行
  4. Cannot load onnxruntime.capi. Error: DLL load failed: 找不到指定的模块
  5. extjs弹出窗口查看文本内容-new Ext.Window
  6. 面试 | 你说你熟悉MySql,那你就来谈谈InnoDB如何解决幻读的?
  7. Asp.net输出Excel文件并且下载该文件以及某些细节问题解决
  8. Linux操作系统相关命令
  9. 分布式架构之缓存系统
  10. 干货:Java并发编程系列之volatile(二)
  11. 【数据结构与算法】二分法的边界问题总结
  12. 第一行代码(Android)第二版PDF和源码
  13. 好工具推荐系列:Feem和Send-anywhere,跨平台局域网传输工具,文件共享工具
  14. 零基础学习SQL Server(一)---查询语句在项目实例中的执行
  15. APP脱壳之MDEX的使用步骤
  16. SQL Server中自定义函数:用指定的分隔符号分割字符串
  17. 使用R语言进行时间序列(arima,指数平滑)分析
  18. 计算机应用基础系统总线,2019年自学考试计算机应用基础试题(4)
  19. 11.14-11.21
  20. 天耀18期 – 6.面向对象-类和对象【作业】.

热门文章

  1. 【埃森哲员工笔试试题及答案】 - 面试网
  2. 基于javaweb+SSM的校园外卖点餐系统(java+SSM+JSP+maven+mysql)
  3. Hash 表详解(哈希表)
  4. Mixly数码管TM1637时钟实验
  5. Mysql之浅析INSERT ON DUPLICATE
  6. 单片机实现PT2262解码示例代码
  7. 电影之记忆4:蝴蝶效应1
  8. 从BAT到BATH 中国云计算世界杯大幕刚启
  9. 三分钟带你学会修改VS的默认对齐数
  10. 虚拟服务器上磁盘没有初始化,Parallels Desktop使用教程--初始化新添加的磁盘