蓝桥杯 基础训练 数字读法
比如说,在对学生讲解第1234567009号位置上的碱基时,光看着数字是很难准确的念出来的。
所以,他迫切地需要一个系统,然后当他输入12 3456 7009时,会给出相应的念法:
十二亿三千四百五十六万七千零九
用汉语拼音表示为
shi er yi san qian si bai wu shi liu wan qi qian ling jiu
这样他只需要照着念就可以了。
你的任务是帮他设计这样一个系统:给定一个阿拉伯数字串,你帮他按照中文读写的规范转为汉语拼音字串,相邻的两个音节用一个空格符格开。
注意必须严格按照规范,比如说“10010”读作“yi wan ling yi shi”而不是“yi wan ling shi”,“100000”读作“shi wan”而不是“yi shi wan”,“2000”读作“er qian”而不是“liang qian”。
这题我根据题目要求分为数字的条件判断和位数条件判断
ps:新手所做,请大触多多指导
代码:
#include<iostream>
#include<string>
#include<string.h>
using namespace std;
int main()
{
char a[10];
string b;
cin >> a;
b = "";
for (int i= strlen(a)-1; i>=0; i--)//根据长度输出单位
{
switch (a[i])//判断数字
{
case '0':
if (i == 0||i==strlen(a)-1)
break;
else if (a[i+1]!='0')
b = " ling" + b; break;
case '1':
if (i == strlen(a)-2||i==strlen(a)-6||i==strlen(a)-10&&a[i+1]!='0')
break;
else
b = " yi"+b; break;
case '2': b = " er" + b; break;
case '3': b = " san" + b; break;
case '4': b = " si" + b; break;
case '5': b = " wu" + b; break;
case '6': b = " liu" + b; break;
case '8': b = " ba" + b; break;
case '7': b = " qi" + b; break;
case '9': b = " jiu" + b; break;
default:break;
}
if (i == strlen(a) - 1 && a[strlen(a) - 2] != '0'&&i != 0)//判断位数
b = " shi" + b;
else if (i == strlen(a) - 2 && a[strlen(a) - 3] != '0'&&i != 0)
b = " bai" + b;
else if (i == strlen(a) - 3 && a[strlen(a) - 4] != '0'&&i != 0)
b = " qian" + b;
else if (i == strlen(a) - 4 && i != 0 && (a[strlen(a) - 5] != '0' || a[strlen(a) - 6] != '0' || a[strlen(a) - 7] != '0'||a[strlen(a) - 8] != '0'))
b = " wan" + b;
else if (i == strlen(a) - 5 && a[strlen(a) - 6] != '0'&&i != 0)
b = " shi" + b;
else if (i == strlen(a) - 6 && a[strlen(a) - 7] != '0'&&i!=0)
b = " bai" + b;
else if (i == strlen(a) - 7 && a[strlen(a) - 8] != '0'&&i != 0 )
b = " qian" + b;
else if (i == strlen(a) - 8 &&i != 0)
b = " yi" + b;
else if (i == strlen(a) - 9 && a[strlen(a) - 10] != '0'&&i != 0)
b = " shi" + b;
else
continue;
}
for (int i = 1; i <b.length();i++)
cout << b[i];
system("pause");
return 0;
}
蓝桥杯 基础训练 数字读法相关推荐
- 蓝桥杯 ALGO-1005 数字游戏 python
蓝桥杯 ALGO-1005 数字游戏 python 试题 算法训练 数字游戏 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 给定一个1-N的排列a[i],每次将相邻两个数相加,得到 ...
- java中的冰雹数,java实现第七届蓝桥杯打印数字
打印数字 打印数字 小明写了一个有趣的程序,给定一串数字. 它可以输出这串数字拼出放大的自己的样子. 比如"2016"会输出为: 00000 1 6666 2 0 0 1 1 6 ...
- python 蓝桥杯--数的读法
Tom教授正在给研究生讲授一门关于基因的课程,有一件事情让他颇为头疼:一条染色体上有成千上万个碱基对,它们从0开始编号,到几百万,几千万,甚至上亿. 比如说,在对学生讲解第1234567009号位置上 ...
- 蓝桥杯 数的读法 C语言
基础练习 数的读法 /*题目: Tom教授正在给研究生讲授一门关于基因的课程,有一件事情让他颇为头疼:一条染色体上有成千上万个碱基对,它们从0开始编号,到几百万,几千万,甚至上亿.比如说,在对学生讲解 ...
- 蓝桥杯 基础训练 试题集汇总【13道】
练习系统 目 录 BASIC-1 闰年判断 BASIC-2 01字串 BASIC-3 字母图形 BASIC-4 数列特征 BASIC-5 查找整数 BASIC-6 杨辉三角 BASIC-7 特殊的 ...
- (蓝桥杯)数字三角形。。(最简单的dp题)
(图3.1-1)示出了一个数字三角形. 请编一个程序计算从顶至底的某处的一条路 径,使该路径所经过的数字的总和最大. ●每一步可沿左斜线向下或右斜线向下走: ●1<三角形行数≤100: ●三角形 ...
- 蓝桥杯 填数字游戏 20分。
小明经常玩 LOL 游戏上瘾,一次他想挑战K大师,不料K大师说: "我们先来玩个空格填字母的游戏,要是你不能赢我,就再别玩LOL了". K大师在纸上画了一行n个格子,要小明和他交替 ...
- java蓝桥杯数字黑洞_【蓝桥杯】数字黑洞(5位黑洞数)
任意一个5位数,比如:34256,把它的各位数字打乱,重新排列,可以得到一个最大的数:65432,一个最小的数23456. 求这两个数字的差,得:41976,把这个数字再次重复上述过程(如果不足5位, ...
- 蓝桥杯 ALGO-1005 数字游戏
1.题目 问题描述 给定一个1-N的排列a[i],每次将相邻两个数相加,得到新序列,再对新序列重复这样的操作,显然每次得到的序列都比上一次的序列长度少1,最终只剩一个数字. 例如: 3 1 2 4 4 ...
最新文章
- SpringBoot + Elasticsearch7.6实现简单查询及高亮分词查询
- 如何通俗理解拉格朗日对偶问题(part2)
- java后台用 requset对象 存储值 前台获取不到_springmvc form表单提交后台对象获取不到值(解决)...
- 【MATLAB、深度学习】AlexNet及VGG神经网络在MATLAB上的应用
- Python基础(四)函数
- Linux编程(4)_gcc
- C#基础---Queue(队列)的应用
- C++函数申明对函数模板实例化的屏蔽
- 大白话讲解Promise(三)搞懂jquery中的Promise
- 思科bfd静态路由切换_配置静态路由与BFD联动
- php100视频教程html,PHP100视频教程48:Ajax+PHP快速上手及应用
- 关于Mac OS的一些想法
- 大学学习路线规划建议贴
- deepin V20.2版本安装MySQL
- ET5.0 配置Excel
- 计算机硬件和软件的主要功能,网络技术在计算机软硬件的作用
- 群智能(SI)与蚁群优化(ACO)概述
- k折交叉验证(k-fold Cross-validation)
- iOS 3DES加密
- 成熟的最高境界,是心境如水