牛客-BC146 添加逗号
题目
描述
对于一个较大的整数 N(1<=N<=2,000,000,000)
比如 980364535,我们常常需要一位一位数这个数字是几位数,但是如果在这 个数字每三位加一个逗号,它会变得更加易于朗读。
因此,这个数字加上逗号成如下的模样:980,364,535请写一个程序帮她完成这件事情
输入描述:
一行一个整数 N
输出描述:
一行一个字符串表示添加完逗号的结果
示例1
输入:
980364535
输出:
980,364,535
备注:
1≤n≤2,000,000,000
题解
递归图
方法一
// 第二种做法:使用递归函数实现整数的千位分隔显示(每三位数间插入逗号)
// 递归函数fun,接受一个整数n作为参数
void fun(int n) {
// 基线条件:如果n小于1000,直接以普通整数形式输出
if (n < 1000) {
printf("%d", n);
} else {
// 递归条件:n大于等于1000,先递归处理n除以1000后的商(高位部分),再输出n对1000取余的部分(低位三位数)
fun(n / 1000); // 递归调用自身,处理高位部分
// 使用格式化输出,在低位三位数前添加逗号,并以零填充至三位,如"001"
printf(",%03d", n % 1000); // 输出低位三位数,带有逗号和零填充
}
}
int main() {
// 主程序:读取用户输入的整数
int n;
scanf("%d", &n);
// 调用递归函数fun,将整数n以千位分隔的形式输出
fun(n);
return 0; // 程序正常结束,返回值为0
}
方法二
// 第一种做法:使用数组和循环实现字符串倒序输出,并在每间隔三个字符处插入逗号
int main() {
// 思路:创建一个数组,接收用户输入的字符串。然后通过数组遍历,从后向前输出字符,
// 同时在每间隔三个字符处(除最后一个字符外)插入逗号。
char arr[20]; // 定义一个长度为20的字符数组,用于存储用户输入的字符串
scanf("%s", arr); // 读取用户输入的字符串,存入数组arr
int len = strlen(arr); // 计算字符串长度
for (int i = 1; i <= len; i++) { // 遍历字符串,从第一个字符到最后一个字符
printf("%c", arr[len - i]); // 输出当前字符,下标从后向前,保证字符倒序
// 给出判断条件,当当前字符距离字符串尾部的字符数模3等于0,且不是最后一个字符时,
// 在该字符后插入逗号
if ((len - i) % 3 == 0 && i != len) {
printf(","); // 输出逗号
}
}
return 0; // 程序正常结束,返回值为0
}
原文地址:https://blog.csdn.net/2302_78381559/article/details/138249502
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!