zoukankan      html  css  js  c++  java
  • 华为机试-人民币转换

    题目描述

    考试题目和要点:

    1、中文大写金额数字前应标明“人民币”字样。中文大写金额数字应用壹、贰、叁、肆、伍、陆、柒、捌、玖、拾、佰、仟、万、亿、元、角、分、零、整等字样填写。(30分) 

    2、中文大写金额数字到“元”为止的,在“元”之后,应写“整字,如¥ 532.00应写成“人民币伍佰叁拾贰元整”。在”角“和”分“后面不写”整字。(30分) 

    3、阿拉伯数字中间有“0”时,中文大写要写“零”字,阿拉伯数字中间连续有几个“0”时,中文大写金额中间只写一个“零”字,如¥6007.14,应写成“人民币陆仟零柒元壹角肆分“。(

    输入描述:

    输入一个double数

    输出描述:

    输出人民币格式

    示例1

    输入

    151121.15
    

    输出

    人民币拾伍万壹仟壹佰贰拾壹元壹角伍分


    Java程序代码
    1. import java.util.Scanner;  
    2.   
    3. /** 
    4.  * 人民币转换 
    5.  *  
    6.  * @author LiJian 
    7.  * 
    8.  */  
    9. public class Main {  
    10.     static char[] danWei = { '亿', '万', '仟', '佰', '拾', '元', '角', '分' };  
    11.     static char[] number = { '零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖' };  
    12.   
    13.     public static void main(String[] args) {  
    14.   
    15.         Scanner scanner = new Scanner(System.in);  
    16.         while (scanner.hasNext()) {  
    17.             double rmb = scanner.nextDouble();  
    18.             // System.out.println(rmb);  
    19.   
    20.             long rmbZ = (long) rmb;  
    21.               
    22.             int jfen = (int) ((rmb + 0.0001) * 100 % 100);  
    23.             // System.out.println(jfen);  
    24.             int yi = (int) (rmbZ / 100000000);// 亿  
    25.             // System.out.println(yi);  
    26.             int wan = (int) (rmbZ % 100000000 / 10000);// 万  
    27.             // System.out.println(wan);  
    28.             int yuan = (int) (rmbZ % 10000);// 元  
    29.             // System.out.println(yuan);  
    30.             StringBuilder stringBuilder = new StringBuilder("人民币");  
    31.             appendYiWanYuan(yi, wan, yuan, stringBuilder);   
    32.             appendJFen(jfen, stringBuilder);  
    33.   
    34.             System.out.println(stringBuilder.toString());  
    35.   
    36.         }  
    37.   
    38.     }  
    39.   
    40.     private static void appendJFen(int jfen, StringBuilder stringBuilder) {  
    41.         if (jfen == 0) {  
    42.             stringBuilder.append('整');  
    43.             return;  
    44.         }  
    45.         int jiao = jfen / 10;  
    46.         int fen = jfen % 10;  
    47.         if (jiao != 0) {  
    48.             stringBuilder.append("" + number[jiao] + danWei[6]);  
    49.         }  
    50.         if (fen != 0) {  
    51.             stringBuilder.append("" + number[fen] + danWei[7]);  
    52.         }  
    53.   
    54.     }  
    55.   
    56.     private static void appendYiWanYuan(int yi, int wan, int yuan, StringBuilder stringBuilder) {  
    57.         boolean addZere = false;  
    58.         if (yi != 0) {  
    59.             jieXiFour(yi, addZere, stringBuilder);  
    60.             stringBuilder.append(danWei[0] + "");  
    61.         }  
    62.         if (wan != 0) {  
    63.             if (yi != 0) {  
    64.                 addZere = true;  
    65.             }  
    66.             jieXiFour(wan, addZere, stringBuilder);  
    67.             stringBuilder.append(danWei[1] + "");  
    68.         }  
    69.         if (yuan != 0) {  
    70.             if (wan != 0) {  
    71.                 addZere = true;  
    72.             }  
    73.             jieXiFour(yuan, addZere, stringBuilder);  
    74.             stringBuilder.append(danWei[5] + "");  
    75.         }  
    76.   
    77.     }  
    78.     private static void jieXiFour(int num, Boolean addZreo, StringBuilder stringBuilder) {  
    79.         int i = 2;  
    80.         int forNum = 0;  
    81.         int current = 0;  
    82.         int numCS = 1000;  
    83.         if (addZreo) {  
    84.             stringBuilder.append(number[0] + "");  
    85.         }  
    86.   
    87.         for (; i < 6; i++) {  
    88.             if (num == 0) {  
    89.                 break;  
    90.             }  
    91.             current = num / numCS;  
    92.             num = num % numCS;  
    93.             if (!(forNum == 0 && current == forNum)) {  
    94.                 if (i == 4 && current == 1) {  
    95.                     stringBuilder.append(danWei[i] + "");  
    96.                 } else {  
    97.                     if (i != 5) {  
    98.                         stringBuilder.append("" + number[current] + danWei[i]);  
    99.                     } else {  
    100.                         stringBuilder.append("" + number[current]);  
    101.                     }  
    102.   
    103.                 }  
    104.             }  
    105.             forNum = current;  
    106.             numCS = numCS / 10;  
    107.   
    108.         }  
    109.   
    110.     }  
    111.   
    112. }  
     
  • 相关阅读:
    在Cortex-M系列上如何准确地做us级延时?
    [嵌入式开发]Linux性能分析——上下文切换
    cnless.sh:改进版less,可自动识别GBK编码或UTF-8编码。
    PuTTY配置
    LINUX内核笔记:自旋锁
    Vue的父子组件间通信及借助$emit和$on解除父子级通信的耦合度高的问题
    elementUi中input输入字符光标在输入一个字符后,光标失去焦点
    elementUi中的计数器ele-mumber中的change事件传参及事件调用
    如何使用git拉取代码及提交代码(详细)
    git 拉取远程代码
  • 原文地址:https://www.cnblogs.com/wwjldm/p/7110755.html
Copyright © 2011-2022 走看看