牛客-BC146 添加逗号

添加逗号_牛客题霸_牛客网 (nowcoder.com)icon-default.png?t=N7T8https://www.nowcoder.com/practice/f51c317e745649c0900996fd3f683aed?tpId=290&tqId=39934&ru=/exam/oj

题目

描述

对于一个较大的整数 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
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

普通young man

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值