数的读法

问题描述
  Tom教授正在给研究生讲授一门关于基因的课程,有一件事情让他颇为头疼:一条染色体上有成千上万个碱基对,它们从0开始编号,到几百万,几千万,甚至上亿。
  比如说,在对学生讲解第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”。
输入格式
  有一个数字串,数值大小不超过2,000,000,000。
输出格式
  是一个由小写英文字母,逗号和空格组成的字符串,表示该数的英文读法。
样例输入
1234567009
样例输出
shi er yi san qian si bai wu shi liu wan qi qian ling jiu

 1 import java.util.Scanner;
 2
 3
 4 public class Main{
 5
 6     public static void main(String[] args) {
 7         Scanner sc = new Scanner(System.in);
 8         int n = sc.nextInt();
 9
10         String P[] ={"ling","yi","er","san","si","wu","liu","qi","ba","jiu"};
11         String W[] = {"shi","bai","qian","wan","yi"};
12         String str[] = new String[20];
13
14         int i=0,j=0,k=0;
15         boolean l[]={false,false,false,false,false};
16         while(n>0){
17             k = n%10;
18             n = n/10;
19             if(k>0){
20                 if(i>0){
21                     if( i>=4 && !l[i/4-1]){
22                         l[i/4-1]=true;
23                         str[j++] = W[i/4+2];
24                     }
25                     if(i%4!=0){
26                         str[j++] = W[i%4-1];
27                     }
28                 }
29                 str[j++] = P[k];
30             }
31             else if(j>0 && str[j-1]!=P[0]){
32                 str[j++] = P[0];
33             }
34             i++;
35         }
36         if(!(str[j-1]=="yi" && str[j-2]=="shi" && j>1)){
37             System.out.print(str[j-1]+" ");
38         }
39         for(i=j-2; i>=0; i--){
40             System.out.print(str[i]+" ");
41         }
42         }
43     }
时间: 2024-12-15 01:38:23

数的读法的相关文章

[BASIC-20] 数的读法

基础练习 数的读法 时间限制:1.0s   内存限制:512.0MB 问题描述 Tom教授正在给研究生讲授一门关于基因的课程,有一件事情让他颇为头疼:一条染色体上有成千上万个碱基对,它们从0开始编号,到几百万,几千万,甚至上亿. 比如说,在对学生讲解第1234567009号位置上的碱基时,光看着数字是很难准确的念出来的. 所以,他迫切地需要一个系统,然后当他输入12 3456 7009时,会给出相应的念法: 十二亿三千四百五十六万七千零九 用汉语拼音表示为 shi er yi san qian

蓝桥杯_基础训练_数的读法

有点恶心的一道题,做了整整半天才完全对. 思路: 把输入的数从右往左每4位进行分割.然后判断单位级数,输出即可. #include <iostream> #include <cstring> #include <algorithm> using namespace std; int main() { string a; string num[]={"ling ","yi ","er ","san &q

数的读法 (模拟)

Description Tom教授正在给研究生讲授一门关于基因的课程,有一件事情让他颇为头疼:一条染色体上有成千上万个碱基对,它们从0开始编号,到几百万,几千万,甚至上亿.比如说,在对学生讲解第1234567009号位置上的碱基时,光看着数字是很难准确的念出来的.所以,他迫切地需要一个系统,然后当他输入12 3456 7009时,会给出相应的念法:十二亿三千四百五十六万七千零九用汉语拼音表示为shi er yi san qian si bai wu shi liu wan qi qian lin

DataGridView绑定数据源

基础练习 数的读法 时间限制:1.0s   内存限制:512.0MB 问题描述 Tom教授正在给研究生讲授一门关于基因的课程,有一件事情让他颇为头疼:一条染色体上有成千上万个碱基对,它们从0开始编号,到几百万,几千万,甚至上亿. 比如说,在对学生讲解第1234567009号位置上的碱基时,光看着数字是很难准确的念出来的. 所以,他迫切地需要一个系统,然后当他输入12 3456 7009时,会给出相应的念法: 十二亿三千四百五十六万七千零九 用汉语拼音表示为 shi er yi san qian

【LQ系列】 BASIC-20~BASIC-25

蓝桥杯网站修好了,今天才关注到,补上上次没有发的BASIC-20和开始今天的五道题: [BASIC-20] 基础练习 数的读法 问题描述 Tom教授正在给研究生讲授一门关于基因的课程,有一件事情让他颇为头疼:一条染色体上有成千上万个碱基对,它们从0开始编号,到几百万,几千万,甚至上亿. 比如说,在对学生讲解第1234567009号位置上的碱基时,光看着数字是很难准确的念出来的. 所以,他迫切地需要一个系统,然后当他输入12 3456 7009时,会给出相应的念法: 十二亿三千四百五十六万七千零九

java程序---将一个浮点数转换成人民币读法

代码如下: <span style="font-size:18px;">package test; import java.util.Scanner; //将输入的浮点型钱数,转成人民币读法 public class Num2Rmb { private static double num; private long zheng,xiao; private String[] hanArr={"零","壹","贰",&

给定一个数值,输出符合中国人习惯的读法--记一道笔试题

题目:给定一个数字,最大小于一万亿,输出符合中国人习惯的读法,例如: a.12输出:十二 b.102输出:一百零二 c.1002输出:一千零二 d.112输出:一百十二 e.10112输出:一万零一百十二 f.120000000:一亿二千万 g.11021002:一千一百零二万一千零二 h.11020102:一千一百零二万零一百零二 i.1000001:一百万零一 j.1000000001:十亿零一 嗯,一道笔试题,解的很没有节操,没有太好的思路,只能尽力抽取翻译过程中的共有代码,尽量写的不那么

千亿级别数字的人民币读法

</pre><pre name="code" class="java">package com.sungeo; /** * 人民币的读法是四位一节: x仟x百x拾 x (亿) x仟x百x拾 x (万) x仟x百x拾 x * @author Administrator */ public class NumToRmb { private String[] hanArr=new String[]{"零","壹&quo

001_电阻色环表的读法

一.电阻色环表的读法 平常使用的色环电阻可以分为四环和五环,通常用四环.其中四环电阻前二环为数字,第三环表示阻值倍乘的数,最后一环为误差:五环电阻前三环为数字,第四环表示阻值倍乘的数,最后一环为误差.误差通常也是金.银和棕三种颜色(金的误差:5%,银的误差:10%,棕色的误差:1%,无色的误差:20%,很少用的绿色表示误差:0.5%). 电阻色环表 电阻色环表小口诀:      棕一红二橙是三,四黄五绿六为蓝,七紫八灰九对白,黑是零,金五银十表误差. 四色环电阻:读法示例:    1.红,黄,棕