对于此题,当数字sum不是不超过int型 或long long型的表示范围时 有一种简便的解决办法:
以sum < 10^9 为例子
if(sum >= 1000000) printf("%d,%03d,%03d", sum / 1000000, sum % 1000000 / 1000, sum % 1000);
else if(sum >= 1000) printf("%d,%03d", sum / 1000, sum % 1000);
else printf("%d", sum);
当超过这个范围时就需要按照处理数组的方法处理
要想将数字sum按照要求输出,首先需要将起转为字符串格式,有两种办法, 一是使用sprintf函数, 二是用for循环进行‘/‘及‘%’运算赋值到int数组。由于逗号所在的位置是从个位号开始计算的,这里有一个小技巧:
将数字num转置, 即数字低位在左,高位在右;
for(int i = len - 1; k >= 0; k--){ //len为数组长度
printf("%d", num[i]); //num[]为转置后的数字
if(k > 0 && k % 3 == 0) printf(","); //技巧就在这,转置后下标能被三整除的,且下标不是0(非最后一位
} 输出)