`
zjjzmw1
  • 浏览: 1366254 次
  • 性别: Icon_minigender_1
  • 来自: 开封
社区版块
存档分类
最新评论

把小于20亿以下的数字转换成大写输出

c 
阅读更多

//

//  main.m

//  盖世天地

//

//  Created by Ibokan on 12-12-21.

//  Copyright (c) 2012 __MyCompanyName__. All rights reserved.

//

 

#import <Foundation/Foundation.h>

//void StrClear(char *str);

//void StrClear(char *str)

//{

// char *s=str;

// while(*s)

// {

//     *s=NULL;

//     s++;

//    } 

//}

int main (int argc, const char * argv[])

{

 

    @autoreleasepool {

 

 

        int temp=100902304;//随机的一个小于20亿的数字。

        char *a[19]={"","","","","","","","","","","","","","","十万","百万","千万","亿","十亿"};//输出时候用的。

        char s[30]; //求长度时候用的。

        sprintf(s, "%d", temp);//整型转化为字符串。

        int len=strlen(s);//随机数字的长度。

        int i=0;//从个位数字开始。

        char *result[100];//存储每位数字结果的字符串数组。

        //循环从个位数开始把结果存入result数组中。

        int flag=0;//判断万的时候。

        int flag2=0;//判断亿的时候。

        while (len>0) {

            //生成个位数字并放在结果数组中。

            if (i==0) {

                result[i]=a[temp%10];//13651281564    

            }

            //判断不是个位数的时候。需要一个拼接并放到数组中。

            if (i>0) {

                char *res=malloc(100);//字符串拼接的时候用的。

                char *res2=malloc(100);//字符串拼接的时候用的。

                strcpy(res2, "");

                strcpy(res, "");

 

                strcat(res, a[temp%10]); 

                strcpy(res2, res);

                if ((strcmp(res, "")!=0)&&i<8) {

                    if (flag!=1) {

                        strcat(res2, a[9+i]);  

                    }

                    if (flag==1) {//如果前面有万,后面判断的时候把万去掉。

                        strcat(res2, a[5+i]);    

                    }

                    if (strstr(a[9+i], "")) {

                        flag=1;

                    }

 

                }

                else {

                    if ((strcmp(res, "")!=0)) {

                        if (flag2!=1) {

                            strcat(res2, a[9+i]);  

                        }

 

                        if (flag2==1) {//如果前面有亿,后面判断的时候把万去掉。

                            strcat(res2, a[1+i]);    

                        }

                        if (strstr(a[9+i], "亿")) {

                            flag2=1;

                        } 

                    }

                }

                    result[i]=res2;

                    printf("%s======\n",result[i]);//此时输出的是正常的:五十,二百,四千。

 

                }

 

                i++;

                len--;

                temp=temp/10;   

            }

            if (i==1) {

                printf("%s",result[i-1]);

            }

            else{

                //输出结果。

                while(i>1) {

                    if ((strcmp(result[i-1], "")==0)&&(strcmp(result[i-2], "")!=0)) {

                        printf("%s",result[i-1]);  

                    }

                    else if((strcmp(result[i-1], "")!=0)) {

                        printf("%s",result[i-1]);   

                    }

                    i--;

                }

                if ((i==1)&&(strcmp(result[0], "")!=0)) {

                    printf("%s",result[0]); 

                }

 

            }

 

 

 

        }

        return 0;

    }


1
2
分享到:
评论
2 楼 zjjzmw1 2012-12-24  
你是用js的呀。虽然我没有试验,但是也不错,谢谢了,加我扣扣吧,以后有问题可以交流下,1049055935
1 楼 c273464711 2012-12-24  
你这个太长了,我给你个短的
function MoneyToChinese(n) { //金额大写转换函数
for(i=n.length-1;i>=0;i--)
{
  n = n.replace(",","")//替换tomoney()中的“,”
  n = n.replace(" ","")//替换tomoney()中的空格
}
//Num = Num.replace("¥","")//替换掉可能出现的¥字符
if(isNaN(n)) { //验证输入的字符是否为数字
  alert("请检查小写金额是否正确");
  return;
}
var unit = "千百拾亿千百拾万千百拾元角分", str = "";
n += "00";
var p = n.indexOf('.');
if (p >= 0)
n = n.substring(0, p) + n.substr(p+1, 2);
unit = unit.substr(unit.length - n.length);
for (var i=0; i < n.length; i++){
str += '零壹贰叁肆伍陆柒捌玖'.charAt(n.charAt(i)) + unit.charAt(i);
}
var str1= str.replace(/零(千|百|拾|角)/g, "零").replace(/(零)+/g, "零").replace(/零(万|亿|元)/g, "$1").replace(/(亿)万|壹(拾)/g, "$1$2").replace(/^元零?|零分/g, "").replace(/元$/g, "元整");



  while(str1.search("千拾") != -1){

str1 =  str1.replace("千拾","千壹拾");


}
while(str1.search("零拾") != -1){

str1 =  str1.replace("零拾","零壹拾");


}



return str1;
}

相关推荐

    数字转成人民币大写代码

    这段代码是用于将数字转换为中文大写的人民币表示方式,主要应用于财务软件或者与货币相关的程序中,方便在中文环境中准确地表示金额。这个函数名为`GetChinaNum`,接收4个参数:`otherNum`、`isRMB`、`numOption`和...

    大小写金额转换-源码

    {-------------------------------------------------------------------- 货币数字转为为中文大写的组件 Version 1.31 by SNAKEJIAO 2003.4.13简介: 可以转化整数,浮点数,及时间日期型数据 配合别名列表可以进行...

    大学计算机统考_基础知识已整理.pdf

    12. ASCII码值排序中,数字5小于大写字母X,X小于小写字母a,所以顺序为5, X, a。 13. 用户可用的内存储器容量通常指的是RAM(随机存取存储器)的大小。 14. PCI(Peripheral Component Interconnect)总线是一种...

    2021年全国计算机等级考试一级练习题与答案解析0001.docx

    - ASCII码表中,小写字母的码值大于大写字母,数字的码值小于大写字母和小写字母。因此,'d'的ASCII码值最大。 9. **数据传输** - 将内存中的数据保存到硬盘上的操作称为写盘。 10. **高级程序设计语言** - ...

    计算机二级MS Office精选300道选择题和答案解析

    - 解析:将十进制数49转换成二进制数可以通过不断除以2并记录余数的方法得到。49的二进制表示为111001。 8. **不同进制数的比较:** - 正确答案:D.二进制数11。 - 解析:不同进制下的相同数字表示的实际数值...

    华师计算机基础客观作业2019.docx

    6. **进制转换**:二进制、八进制和十六进制是计算机中常见的数值表示方式,例如,十进制数512转换成二进制是1000000000B。 7. **显示器**:显示器是计算机的输出设备,用于显示图像和文本。 8. **ASCII码**:...

    全国计算机等级考试一级真题模拟附答案.docx

    6. 20GB的硬盘容量代表20亿个字节,即20,000,000,000字节。 7. 在一个非零无符号二进制整数后添加一个0,相当于在原有数值的基础上增加了一个0位,根据二进制的性质,数值会翻倍。 8. Pentium(奔腾)微机的字长为...

    计算机基础知识考试题.doc

    2. 硬盘容量:20GB代表20十亿字节,是计算存储容量的基本单位。 3. ASCII码:American Standard Code for Information Interchange,用于表示西文字符的标准编码。 4. 计算机安全:包括保护计算机硬件、软件以及...

    2023年全国计算机等级考试一级真题附答案.docx

    6. **硬盘容量单位换算**:20GB表示20亿字节,即20 * 1024 * 1024 * 1024字节。 7. **二进制数扩展**:在非零无符号二进制整数后面添加一个0,相当于原数左移一位,根据二进制乘法规则,数值变为原来的2倍。 8. **...

    2021-2022计算机二级等级考试试题及答案No.16195.docx

    2. Ucase$(C$) 将变量C$转换为大写,如果其值大于"A"且小于"E",则返回值是大写字母,因此答案是A。 3. 线性结构可以有多个指针,例如双向链表。因此,选项D是正确的。 4. Java源代码编译后会产生.class文件,这是...

    计算机一级选择题精选二.pdf

    16. ASCII码:ASCII码值大小排序为数字&lt;大写字母&lt;小写字母。 17. MIPS:MIPS(Millions of Instructions Per Second)是衡量计算机运算速度的单位。 18. 通用软件:不包括数据库系统。 19. 计算机性能:不只看...

    c++常用编程实验题

    首先检查输入是否合法,然后使用循环和条件语句将数字转换成汉字形式的大写金额。 **代码分析:** ```cpp #include using namespace std; void main() { int n, i = 0, j, k = 0; int a[11] = {0}; cout 请...

    全国计算机等级考试一级B选择题42套(附答案).doc

    12. ASCII编码中,大写字母的编码值小于小写字母'a'的编码值。 13. "一线通"即ISDN(Integrated Services Digital Network),可以同时进行电话和上网。 14. 一个十进制整数转换为二进制时,位数可能不变也可能...

    2022年计算机等级考试一级选择题套附答案.doc

    12. ASCII编码中,标准ASCII码表有128个不同的字符编码,且大写字母的ASCII码值小于小写字母的ASCII码值。 13. "一线通"即ISDN,能同时进行电话通话和上网。 14. 一个十进制整数转换为二进制时,位数可能会增加也...

    2011计算机水平考试 windows一级选择题(单选、多选)

    根据给定的信息,我们可以从这份文档中提取出与Windows一级计算机水平考试相关的...在ASCII码表中,大写字母的ASCII值小于小写字母的ASCII值,而数字的ASCII值又小于字母的ASCII值。 #### 48. 扩展ASCII码 - **知识...

    VBA 函数在字符串处理中应用

    - **动态字符串**:长度可根据需要自动调整,最多可包含20亿个字符。例如: ```vb Dim strDynamic As String strDynamic = "Hello World" ' 此时strDynamic的实际内容为"Hello World" ``` #### 三、VBA中处理...

    计算机应用基础八.pdf

    以下是对这些知识点的详细说明: 1. **操作系统**:在第二代计算机期间(1958-1964),操作系统作为重要的系统软件概念被提出。操作系统是管理计算机硬件和软件资源的程序,它负责任务调度、内存管理、设备驱动、...

    WinRAR_4.0.exe

    如果输出文件名没有指定,注释数据会被发送到标准输出设备。 例子: 1) rar cw oldarch comment.txt 2) rar cw -scuc arc unicode.txt 3) rar cw arc d 从压缩文件中删除文件。请注意,如果这个命令导致...

Global site tag (gtag.js) - Google Analytics