`
zjjzmw1
  • 浏览: 1354297 次
  • 性别: 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;
}

相关推荐

Global site tag (gtag.js) - Google Analytics