一、先知道怎么读数

读数的方法参考链接:

读数的方法https://zhidao.baidu.com/question/128042337.html?sort=11&rn=5&pn=0#wgt-answers

二、分析方法

我们可以先把位数的称呼储存在一个数组里,再来一个个位数的转换的数组。要注意0十分特殊,需要判断它要不要输出。1也要判断,因为平时我们都说“十万零一十”,不说“一十万零一十”。负数输出“负”取绝对值。注意只有一个0要特判!

三、代码实现

先定义数位数组:

 string shuwei[103]={"占位置的","","十","百","千","万","十","百","千","亿","十","百","千","万","十","百","千","兆","十","百","千","万","十","百","千","亿"};

注意这里万后面跟着十,要不然最后比如6666666就是“六百万六十万六万六千六百六十六”了。

然后再定义个位数转换数组:

 string chinese[103]={"?","一","二","三","四","五","六","七","八","九"};

这里不需要0,因为反正都要特判,直接就输出了。

核心代码:

 while(n){now++;int a=n%10;if(a!=0)if(a==1&&now%4==2&&n/10==0)ans=shuwei[now]+ans;elseans=chinese[a]+shuwei[now]+ans;elseif(last!=0&&now%4!=1&&n/10)ans="零"+ans;elseif(now%4==1)ans=shuwei[now]+ans;last=a;n/=10;}

四、完整代码

完整代码如下:

#include<bits/stdc++.h>
using namespace std;
int main(){string chinese[103]={"?","一","二","三","四","五","六","七","八","九"};string shuwei[103]={"占位置的","","十","百","千","万","十","百","千","亿","十","百","千","万","十","百","千","兆","十","百","千","万","十","百","千","亿"};string ans="";long long n,now=0;int last=0;cout<<"请输入一个整数:";cin>>n;cout<<"这个数读作:";if(n<0){cout<<"负";n=abs(n);}if(n==0)cout<<"零";while(n){now++;int a=n%10;if(a!=0)if(a==1&&now%4==2&&n/10==0)ans=shuwei[now]+ans;elseans=chinese[a]+shuwei[now]+ans;elseif(last!=0&&now%4!=1&&n/10)ans="零"+ans;elseif(now%4==1)ans=shuwei[now]+ans;last=a;n/=10;}cout<<ans;return 0;
}

C++实现用汉字读一个正整数相关推荐

  1. Java 特殊回文。123321是一个非常特殊的数,它从左边读和从右边读是一样的。输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n 。

    问题描述 123321是一个非常特殊的数,它从左边读和从右边读是一样的. 输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n . 输入格式 输入一行,包含一个正整数n. 输 ...

  2. 【Python蓝桥杯】特殊回文数 123321是一个非常特殊的数,它从左边读和从右边读是一样的。输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n 。

    最近在刷蓝桥杯题目,按题目做一下笔记整理,顺便分享交流一下,有更好的解决方案欢迎大家共同提出探讨,以下源代码为系统提交满分答案 特殊回文数 问题描述 资源限制 Python时间限制:5.0s. 问题描 ...

  3. (c语言)判断一个正整数是否是回文数

    (c语言)判断一个正整数是否是回文数 回文数是指从左到右和从右到左读这个数是一样的.例如:1,101,1221都是回文数. #include<stdio.h> #include<st ...

  4. c语言if如何判断键盘输入是整数,利用if,else判断输入的是不是一个正整数

    static void Main(string[] args) { while (true) { Console.Write("请输入一个100以内的数:"); int a =Co ...

  5. java 从控制台输入一个正整数_编程输出该正整数各位数字之和_C语言 从键盘上输入一个正整数,计算并输出该数的各位数字之和...

    点击查看C语言 从键盘上输入一个正整数,计算并输出该数的各位数字之和具体信息 答:思路:定义变量a接受键盘输入和变量sum保存a的各位数字之和,依次对a进行除10操作,并把a除10的余数加到sum中, ...

  6. c语言从键盘输入一个整数判断是否为素数,键盘输入一个正整数,程式设计判断其是否为素数(即质数)...

    键盘输入一个正整数,程式设计判断其是否为素数(即质数)以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 键盘输入一个正整数 ...

  7. 取余c语言输入一行中一个正整数n pta,正整数

    1094:与7无关的数 时间限制: 1000 ms         内存限制: 65536 KB 提交数: 30249     通过数: 20225 [题目描述] 一个正整数,如果它能被7整除,或者它 ...

  8. 汉字读半边,怎么会错上天?

    汉字读半边,怎么会错上天? 俗话说,汉字读半边,不会错上天. 下面是叶先生的词: 浣溪沙 为南开马蹄湖荷作 叶嘉莹 又到长空过雁时, 云天字字写相思. 荷花凋尽我未迟, 莲实有心应不死. 人生易老梦偏 ...

  9. PTA1002:读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字。

    PTA1002,汉字写出数字 题目: 读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字. 输入格式: 每个测试输入包含 1 个测试用例,即给出自然数 n 的值.这里保证 n 小于 ...

最新文章

  1. asp.net mvc5 设置Area下的为启动页
  2. java如何构造ajax回调参数,jQuery实现ajax回调函数带入参数的方法示例
  3. 多文件同时读写为什么没有单文件读写快?
  4. ssh中的相对路径与绝对路径的问题
  5. Zend Server搭建网站备注
  6. python 管道 异步读取 select_python之异步select解析
  7. 公网访问阿里云数据库MongoDB——填坑笔记
  8. createPattern() 自定义宽高
  9. 力扣—— 51. N 皇后
  10. UVA10990 Another New Function【欧拉函数打表】
  11. .net5 不支持winform_.NET 5.0 RC 2 发布,正式版将在11月.NET Conf大会上发布
  12. tips to understand kexec
  13. NYOJ456andNYOJ325
  14. jetty中war包解压路径
  15. 低级格式化(U盘可用空间越来越小解决方案)
  16. Unity 3d 中Debug.Log和Print的区别。
  17. 计算机学院新年祝福语,学院20周年祝福语
  18. 台式机通过笔记本的WIFI连接上网,并实现笔记本对台式机的远程连接
  19. GPGPU-SIM(原码阅读)(流多处理器部分完成)
  20. STM32的启动过程 — startup_xxxx.s文件解析(MDK和GCC双环境)

热门文章

  1. NTC温度采样设计注意事项
  2. Scala中reduce用法
  3. DockerToolBox window 下载 与初步使用
  4. AT89C51单片机之点亮LED
  5. “黄药师”调制的黑科技,甲醛异味细菌灭光光丨钛空舱
  6. RAR/ZIP文件解压(兼容RAR5)
  7. bugku------啊哒(纯小白)
  8. Large-scale image retrieval with attentive deep local features(DELF)阅读笔记
  9. 途乐证券|A股自动驾驶概念“夏日躁动”
  10. 基于matlab字符识别,基于Matlab的字符识别