精华内容
下载资源
问答
  • 17、小写数字转大写数字

    千次阅读 2018-09-16 18:25:56
    实现一个算法,可以将小写数字转换成大写数字。 输入输入一个整数。范围在0~450亿之间。 输出: 输出对应的大写数字,以“元整”结尾。 大写数字要符合汉语读写习惯。 输入样例: 0 5 233 1001 40607 ...

    (个人水平有限,请见谅!)

    描述:

    实现一个算法,可以将小写数字转换成大写数字。

    输入:

    输入一个整数。范围在0~450亿之间。

    输出:

    输出对应的大写数字,以“元整”结尾。 大写数字要符合汉语读写习惯。

    输入样例:

    0
    5
    233
    1001
    40607
    8900000000

    输出样例:

    零元整
    伍元整
    贰佰叁拾叁元整
    壹仟零壹元整
    肆万零陆佰零柒元整
    捌拾玖亿元整

    代码示例:

    #include <iostream>
    #include <bits/stdc++.h>
    
    using namespace std;
    
    int main()
    {
        char line[1000001];
    
        // 循环读入多行数据
        while (cin.getline(line, 1000000)) {
            string str = line;
            string result = "", result_t = "", tt1 = "零", tt2 = "万", tt3 = "亿";
            string num[10] = { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" };
            if (str == "0")
                cout << "零元整" << endl;
            else
            {
                for (int i = str.size() - 1; i >= 0; i--)
                {
                    int j = str.size() - 1 - i;
    
                    if (str[i] == '0')
                        result += "零";
    
    
                    if (j % 4 == 3 && str[i] != '0')
                        result += "仟" + num[str[i] - '0'];
    
                    if (j % 4 == 2 && str[i] != '0')
                        result += "佰" + num[str[i] - '0'];
    
                    if (j % 4 == 1 && str[i] != '0')
                        result += "拾" + num[str[i] - '0'];
    
                    if (j % 4 == 0 && str[i] != '0')
                        result += num[str[i] - '0'];
    
                    if (j % 8 == 3 && j != str.size() - 1)
                        result += "万";
    
                    if (j % 8 == 7 && j != str.size() - 1)
                        result += "亿";
    
                }
    
                for (int i = 0; i < result.size() - 3;)
                {
                    if (result[0] == tt1[0] && result[1] == tt1[1] && result[2] == tt1[2])
                    {
                        result.erase(i, 3);
                        continue;
                    }
                    if (result[i] == tt1[0] && result[i + 1] == tt1[1] && result[i + 2] == tt1[2] && result[i + 3] == tt1[0] && result[i + 4] == tt1[1] && result[i + 5] == tt1[2] )        // 零零
                        result.erase(i + 3, 3);
                    else if (result[i] == tt2[0] && result[i + 1] == tt2[1] && result[i + 2] == tt2[2] && result[i + 3] == tt1[0] && result[i + 4] == tt1[1] && result[i + 5] == tt1[2] )   // 万零
                        result.erase(i + 3, 3);
                    else if (result[i] == tt3[0] && result[i + 1] == tt3[1] && result[i + 2] == tt3[2] && result[i + 3] == tt1[0] && result[i + 4] == tt1[1] && result[i + 5] == tt1[2] )   // 亿零
                        result.erase(i + 3, 3);
                    else if (result[i] == tt2[0] && result[i + 1] == tt2[1] && result[i + 2] == tt2[2] && result[i + 3] == tt3[0] && result[i + 4] == tt3[1] && result[i + 5] == tt3[2] )   // 万亿
                        result.erase(i, 3);
                    else
                        i = i + 3;  
                }
    
                for (int i = result.size() - 1; i >= 2; i = i - 3)
                    cout << result[i - 2] << result[i - 1] << result[i];
                cout << "元整" << endl;
            }
        }
        return 0;
    }
    展开全文
  • Java实现小写数字转大写数字(小米OJ)

    千次阅读 2019-05-31 13:34:14
    import java.util.*; public class Main { public static void main(String args[]) { Scanner scan = new Scanner(System.in); String line; Main m = new Main(); while (s...

    懒得写注释了,有疑问的评论就行.... 

    import java.util.*;
    
    public class Main {
        public static void main(String args[]) {
            Scanner scan = new Scanner(System.in);
            String line;
            Main m = new Main();
            while (scan.hasNextLine()) {
                line = scan.nextLine().trim();
                String answer = "";
                if(line.equals("0")) {
                	System.out.println("零元整");
                	continue;
                }
                int len = line.length();
                char c;
                for(int i = 0; i < len; i++) {
                	c = line.charAt(i);
                	if((len-i)%4 == 0) {
                		if(c != '0') {
                			answer += m.charToUpper(line.charAt(i)) + "仟";
                		}
                		else if(line.charAt(i+1) != '0') {
                			answer += "零";
                		}
                	}
                	if((len-i)%4 == 1) {
                		if(c != '0') {
                			if((len-i) == 1)
                				answer += m.charToUpper(line.charAt(i));
                			if((len-i) == 5)
                				answer += m.charToUpper(line.charAt(i)) + "万";
    	            		if((len-i) == 9)
    	            			answer += m.charToUpper(line.charAt(i)) + "亿";
                		}
                		else if(c == '0') {
                			if((len-i) == 5)
                				answer += "万";
    	            		if((len-i) == 9)
    	            			answer += "亿";
                		}
                	}
                	if((len-i)%4 == 2) {
                		if(c != '0')
                			answer += m.charToUpper(line.charAt(i)) + "拾";
                		else if(line.charAt(i+1) != '0')
                			answer += "零";
                	}
                	if((len-i)%4 == 3) {
                		if(c != '0')
                			answer += m.charToUpper(line.charAt(i)) + "佰";
                		else if(line.charAt(i+1) != '0')
                			answer += "零";
                	}
                }
                answer = answer.replace("亿万","亿");
                System.out.println(answer+"元整");
            }
        }
        public String charToUpper(char c) {
            String s = null;
            switch(c) {
            case '0':
                s = "零";
                break;
            case '1':
                s = "壹";
                break;
            case '2':
                s = "贰";
                break;
            case '3':
                s = "叁";
                break;
            case '4':
                s = "肆";
                break;
            case '5':
                s = "伍";
                break;
            case '6':
                s = "陆";
                break;
            case '7':
                s = "柒";
                break;
            case '8':
                s = "捌";
                break;
            case '9':
                s = "玖";
                break;
            }
            return s;
        }
    }

     

    展开全文
  • function NumTOChina... //小写数字转大写 const  d= '零壹贰叁肆伍陆柒捌玖分角圆拾佰仟万拾佰仟亿拾佰仟'; var  m,k:string;  j:integer; begin  i:=i*100;  k:= '';  m:=inttostr(trunc(i));  f
     function   NumTOChina(i:Real):string;   //小写数字转大写
    const
        d= '零壹贰叁肆伍陆柒捌玖分角圆拾佰仟万拾佰仟亿拾佰仟';
    var
        m,k:string;
        j:integer;
    begin
        i:=i*100;
        k:= '';
        m:=inttostr(trunc(i));
        for   j:=length(m)   downto   1   do
            k:=k+d[(strtoint(m[Length(m)-j+1])+1)*2-1]+d[(strtoint(m[Length(m)-j+1])+1)*2]
                +d[(10+j)*2-1]+d[(10+j)*2];
        result:=k;
    end;
    展开全文
  • 小写数字转换成大写数字

    千次阅读 2016-12-03 23:18:20
    前两天看到一道题,关于小写数字转换成大写的。也就是将“1023050405”这样的数字转换为“十亿二千三百零五万零四百零五”。这个是个算法问题,其它语言也是相通的。其中的难点应该是对零的处理。示例代码以Java为例...

    前两天看到一道题,关于小写数字转换成大写的。也就是将“1023050405”这样的数字转换为“十亿二千三百零五万零四百零五”。

    这个是个算法问题,其它语言也是相通的。

    • 其中的难点应该是对零的处理。

    我写的代码如下,以Java为例(因为搞安卓的嘛),这里以整型作为参数,如果你感兴趣,可以做一些改动以小数作为参数:

    /**
     * @author Binzo
     * @date 20161203
     * @param number 整型参数。例如:1023050405
     * @return 根据整型参数返回大写数字。例如:十亿二千三百零五万零四百零五
     */
    public static String convertToSimplifiedChinese(int number){
        final String[] TAG_DIGIT = {"零", "一", "二", "三", "四", "五", "六", "七", "八", "九"};
        final String[] TAG_WEIGHT = {"", "十", "百", "千", "万", "十", "百", "千", "亿", "十", "百", "千", "兆"};
        String numberString = String.valueOf(number);
        char[] digits = numberString.toCharArray();
        StringBuffer sb = new StringBuffer();
        for (int i = 0; i < digits.length; i++) {
            // 获取每位上的数字d
            int d = Integer.valueOf(String.valueOf(digits[i]));
            String digit = TAG_DIGIT[d];
            // 反转,for循环是低位~高位,反转后即高位~低位
            int index = digits.length - i - 1;
            String weight = TAG_WEIGHT[index];
            if (DEBUG){
                System.out.printf("index=%d,", index);
                System.out.printf("digit=%s,", digit);
                System.out.printf("weight=%s\n", weight);
            }
            if (d == 0 && index % 4 == 0) {
                // 万、亿 作为一个过渡位
                sb.append(weight);
            } else if (d == 0) {
                sb.append(digit);
            } else if (d == 1 && index % 4 == 1) {
                // 类似于15,转换为"十五",而不用"一十五"
                sb.append(weight);
            } else {
                sb.append(digit);
                sb.append(weight);
            }
        }
        if (DEBUG){
            System.out.printf("%d : ", number);
            System.out.println(sb.toString());
        }
        return sb.toString();
    }

    在网上可以搜索到很多种版本,毕竟这是一个比较基础的算法题。
    比如这篇:http://blog.csdn.net/zgrjkflmkyc/article/details/14517789
    或者:https://www.oschina.net/code/snippet_137848_4896

    等等,观察了一些实现方法,但最后还是自己写了一个不同的,我觉得我这个版本还是结构相对简洁些的。

    一开始,自己觉得这是一个很容易实现的算法,但是真写起来也花了好一会儿时间。而后我又实现了大写中文货币格式、以及大写的美国货币格式。如下图的输出结果所示:

    这里写图片描述

    小写数字转换为英文大写货币形式如:
    1023150405 对应:
    U.S. DOLLARS ONE BILLION,TWENTY-THREE MILLION,ONE HUNDRED AND FIFTY THOUSAND,FOUR HUNDRED AND FIVE ONLY

    原理还是跟我这段代码中的是相通的,只是英文的就步骤多了几个,如果你也用得上,欢迎探讨,共同学习。

    展开全文
  • php 金额小写数字转大写汉字

    千次阅读 2009-04-03 09:07:00
    用途: 金额小写转大写//范围: 万亿>= (-,-) >=分//作者: 283879541/*example:$test = new digit2chinese;$test->num = 5009999999.12;$test->chuli();$test->huey_print();*/class digit2chinese{
  • Console.WriteLine("请输入小写,我们将转换成大写"); string input = Console.ReadLine(); //123123 乱七八糟abc for (int i = 0; i ; i++) { if (dic.ContainsKey(input[i])) { Console.Write(dic[input[i...
  • 人民币(RMB)小写/数字转换大写工具类,精确到分,修复‘圆零零’为‘圆整’,修复科学计数法处理异常。... * @param money 传入小写数字字符串 * @return String * @throws Exception */ public static String t...
  • <div >合计:{{smallToBig(jieAdaiTotal)}}</div> 转载于:... smallToBig(money) { // 汉字的数字 const cnNums = ["零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"]; /
  • js小写数字转大写(正则表达式)

    千次阅读 2006-04-11 11:39:00
     var input=prompt("请输入一个数字串:",0); //输入  var xiaoshu=0;  var re=/^0+/g;  var xiaoshu=0;  var output="",output2="";  input=input.replace(re,"");  input=input.replace(",","");  var ...
  • js实现小写转大写,js实现数字转人民币,js实现数字转货币
  • 将下列字符串转换成为大写字符: char buf[100]="aFDsfdsDE3432d
  • 就可以把text中的小写字母展示成大写字母,如果想让EditText也可以把输入小写字母转换成大写字母呢。 注意: 如果在EditText中添加android:textAllCaps=“true”,当在EditText中输入时会导致崩溃: ...
  • 用Excel办公中,办公员为了方便录入通常都把数字小写录入就得了,但却需要转化成大写模式,所以需要利用Excel中的转化公式,下面是学习啦小编整理的excel 数字小写转大写公式的教程,以供大家阅读。 excel 数字...
  • 输入框中小写字母自动转换为大写 网站地址:我的个人vue+element ui demo网站 github地址:yuleGH github 过滤器实现 <html> <head> <title>测试</title> </head> <...
  • java将小写数字变成大写输出

    千次阅读 2017-04-10 21:49:41
    import java.util.Scanner;...//方法1 将小写数字变成大写并输出switch private static void capitalNumber1(int nu){ switch(nu){ case 0: System.out.println("方法1输出结果:零"); break; case 1: System.
  • datasegment  ass db 250 dup('?')  data ends codesegment  assume cs:code,ds:data  start:  mov ax,data  mov ds,ax    lea dx,ass  mov ah,0AH  int 21h  mov cl,
  • 2020.3.19,C语言自学路上的我正看老九函数第一课,中间出了一道小写数字转大写数字的题目,于是我打开codeblock开始尝试解题,经过一晚上的推导,顺着老九的思路完美敲出代码~开心!。 (不过期间也有尝试百度这...
  • SQL人民币小写金额转大写

    千次阅读 2016-04-05 22:03:44
    --1、人民币小写金额转大写(第一版) ==================================================================== -- Title: 人民币小写金额转大写 -- Author: dobear Mail(MSN): dobear_0922@hotmail.com -- ...
  • 本程序用于将小写数字转换为一般中文大写或中文大写金额, 提供以下功能:1. 允许任意整数或小数, 一般中文大写转换范围在(-10,000,000,000,000,000 ~ 10,000,000,000,000,000)之间, 中文大写金额转换范围在(0,? ~ 10,...
  • 今天能做完的事,绝不拖到明天----苏步青 #define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<... printf("请输入一个字符:\n"); while ((ch = getchar()) != EOF) { if (ch...
  • private void textBox1_KeyPress(object sender, KeyPressEventArgs e)//只能输入数字和ABCDEFG,小字字母自动转换为大写字母 { if (!((e.KeyChar >= 48 && e.KeyChar <= 57) || (e.KeyChar &g...
  • _________ Excel数字小写金额转换汉字...网上有很多设置Excel数字小写金额汉字大写金额公式的方法,基本上都很繁琐,且功能不全面(对负金额不能转换)。 本人在Excel会计工作实践中,设计了一个数字小写金额转换
  • 输入大写字母变小写输入小写字母变大写
  • C/C++小写数字转换成大写数字

    千次阅读 2008-11-30 19:01:00
    /*取各位上的数字*/ for (n=0;;n++)  {   if (num[n]== '.' )  {   for (j=n-1;j>=0;j--) /*判断是否是万位,亿位..如是再判断是否是0如是就不输出零.*/  {   if (m)   if (m==5&&( int )num[j]==0)  ;   ...
  • js实现小写数字转换为大写的方法

    千次阅读 2014-04-23 15:12:21
    //主函数   function DX(n) {   if (!/^(0|[1-9]\d*)(\.\d+)?$/.test(n))  return "数据非法";  var unit = "千百拾亿千百拾万千百拾元角分", str = "";  n += "00"; ... if (p >=
  • 1. 限制只能输入数字和字母的方法,在Editext的属性中加入这一行代码即可 android:digits="0123456789...小写自动转换成大写的方法(在输入车牌好的时候可以用到) public class AllCapTransforma
  • 网络转载 class DigitToChnText ... private readonly char[] ... MessageBox.Show("输入数字太大或太小,超出范围!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information);  isValidate ...
  • 首先新建一个TransChineseMoneyScriptlet.java继承JRAbstractScriptlet类,具体方法number2CNMontrayUnit实现金额小写转大写的功能,代码如下:(这是本人从网上找的一段金额小写转大写的代码)第一步: ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 266,222
精华内容 106,488
关键字:

怎么输入小写数字转大写