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

18 篇文章 0 订阅

//

//  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;

    }


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值