| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1522 人关注过本帖
标题:逗号分隔数字
只看楼主 加入收藏
lz1091914999
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:四川
等 级:贵宾
威 望:37
帖 子:2011
专家分:5959
注 册:2010-11-1
结帖率:94.64%
收藏
 问题点数:0 回复次数:1 
逗号分隔数字
程序代码:
#include <stdio.h>

// long long 最大值 9223372036854775807 最小值 -9223372036854775808
// 最多只需要用19个字符就能存储C里的有符号最大类型的最大值,用20个字符就能存储有符号最小整数,加上一个'\0'为21个字符。
// -9,223,372,036,854,775,808 转换后最多需要 21 + 6 个字符。

char * convert(char * buf, __int64 num);  // 把num以逗号分隔组成的数存放在buf里,然后返回buf。

int main(void)
{
    char    buf[27];
    __int64 num;    // Windows 下用 __int64,Linux下用long long
   
    scanf("%I64d", &num);
    convert(buf, num);
    printf("%s\n", buf);
   
    return 0;
}

char * convert(char * buf, __int64 num)
{
    char szTmp[21];
    int  commas;
    int  iLen = sprintf(szTmp, "%I64d", num);
    int  i, j;
   
    if(szTmp[0] == '-' && iLen % 3 == 1 || iLen % 3 == 0)
        commas = iLen / 3 - 1;
    else
        commas = iLen / 3;
   
    for(i = iLen + commas - 4, j = 0; j < commas; i -= 4, j++)
        buf[i] = ',';
   
    for(i = iLen + commas - 1, j = iLen - 1; i > -1; i--)
        if(buf[i] == ',')
            continue;
        else
            buf[i] = szTmp[j--];
   
    buf[iLen + commas] = '\0';
   
    return buf;
}

大家以后也许会遇到。
搜索更多相关主题的帖子: long 存储 最大值 color 
2011-08-22 14:42
stophin
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:3
帖 子:227
专家分:618
注 册:2010-3-26
收藏
得分:0 
顶一个先,做做沙发哈哈
2011-08-22 21:43
快速回复:逗号分隔数字
数据加载中...
 
   



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

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