| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1564 人关注过本帖
标题:数字转中文,输入数字超过10万,结果就会出错,大神们可以帮忙看看吗?
只看楼主 加入收藏
danielxiang
Rank: 2
等 级:论坛游民
帖 子:8
专家分:22
注 册:2017-7-27
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:4 
数字转中文,输入数字超过10万,结果就会出错,大神们可以帮忙看看吗?
#include<stdio.h>
#include <stdlib.h>
int main()
{
    //输入一个数字,输出这个数字相应的中文表示
    double money;//表示输入的数字
    int m = 0; //修改后的数字
    char ch[10][4] = {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"};
    int n = 0;  //数字的位数
    int fei[20] = {0}; //保存每一个数字
    int i = 0;//循环变量
    char wei[20][4] = {"分", "角", "元", "拾", "佰", "仟", "萬", "拾萬", "佰萬", "仟萬", "億", "拾億", "佰億", "仟億", "萬億"};
    do
    {
        printf("请输入数字:");
        scanf("%lf",&money);
        if(money < 0)
        {
            printf("输入有误!\n");
        }
    }while(money < 0);
    m = (int)((money + 0.005)*100);
    //printf("m是%d\n",m);  //测试保留两位数字的输出
    while(m != 0)
    {
        fei[i] = m % 10;
        m = m / 10;
        i++;
        n++;
    }
    printf("相应的中文数字是:\n");
    for(i = 0; i < n-2; i++)
    {
        if((fei[n-i-1] != 0) || (fei[n-i] != 0))
        {
            printf("%s",ch[fei[n-1-i]]);
            if(fei[n-i-1] != 0)
                printf("%s",wei[n-i-1]);
        }
    }
    if(fei[2] == 0)
        printf("%c%c元",8,8);
    if(fei[0] == 0 && fei[1] == 0)
    {
        printf("整");
    }
    else
    {
        for(i = 0; i < 2; i++)
        {
                printf("%s",ch[fei[2-1-i]]);
                if(fei[2-i-1] != 0)
                {
                    printf("%s",wei[2-i-1]);
                }

        }
        if(fei[0] == 0)
            printf("%c ",8);
    }



    printf("\n");
    return 0;

}

[此贴子已经被作者于2017-7-27 11:17编辑过]

搜索更多相关主题的帖子: 数字 输入 int money printf 
2017-07-27 10:07
GBH1
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:5
帖 子:112
专家分:510
注 册:2017-6-13
收藏
得分:18 
char wei[20][4] = {"分", "角", "元", "拾", "佰", "仟", "萬", "拾萬", "佰萬", "仟萬", "億", "拾億", "佰億", "仟億", "萬億"};
这个数组生命有问题。一个汉字占3个字节,两个就站6个字节。所以数组第二维长度太小了。所以上了万以后出问题
2017-07-27 10:53
GBH1
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:5
帖 子:112
专家分:510
注 册:2017-6-13
收藏
得分:2 
m = (int)((money + 0.005)*100);这个money变量没有初始化,也没见到你赋值,那这个m的值如何得到
2017-07-27 11:02
danielxiang
Rank: 2
等 级:论坛游民
帖 子:8
专家分:22
注 册:2017-7-27
收藏
得分:0 
回复 3楼 GBH1
之前删除掉了  复制过来忘了加上了  现在加上了
2017-07-27 11:17
danielxiang
Rank: 2
等 级:论坛游民
帖 子:8
专家分:22
注 册:2017-7-27
收藏
得分:0 
回复 2楼 GBH1
嗯嗯  谢谢  修改了一下  确实好了
2017-07-27 11:25
快速回复:数字转中文,输入数字超过10万,结果就会出错,大神们可以帮忙看看吗? ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.079068 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved