You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C语言中将输入的123转换输出为122333?

C语言实现数字按位重复输出(如输入123输出122333)

方案一:字符串转换法(简洁直观)

通过将整数转为字符串,直接遍历每一位字符并按要求重复输出,代码可读性高,适合快速实现:

#include <stdio.h>
#include <string.h>

int main() {
    int num = 123;
    char num_str[20];
    // 将整数转为字符串,方便按位访问
    sprintf(num_str, "%d", num);
    int len = strlen(num_str);
    
    // 遍历每一位,第i位(从0开始计数)重复i+1次输出
    for (int i = 0; i < len; i++) {
        int repeat_times = i + 1;
        for (int j = 0; j < repeat_times; j++) {
            putchar(num_str[i]);
        }
    }
    putchar('\n');
    return 0;
}

方案二:数学拆分法(无需字符串操作)

如果不想依赖字符串转换,可通过数学运算拆分每一位数字,再按规则重复输出:

#include <stdio.h>
#include <math.h>

int main() {
    int num = 123;
    int temp = num;
    int digit_count = 0;
    
    // 统计数字的总位数
    while (temp != 0) {
        temp /= 10;
        digit_count++;
    }
    
    // 从最高位到最低位依次处理每一位
    for (int i = digit_count; i >= 1; i--) {
        int divisor = pow(10, i - 1);
        int digit = num / divisor;
        // 重复i次输出当前数字
        for (int j = 0; j < i; j++) {
            printf("%d", digit);
        }
        // 移除已处理的最高位
        num %= divisor;
    }
    printf("\n");
    return 0;
}

核心逻辑说明

两种方法的核心都是拆分数字的每一位,然后按位的位置(第n位重复n次)输出对应次数的数字。字符串法更简洁,数学法则能帮助理解数字的位运算逻辑,可根据需求选择。

内容的提问来源于stack exchange,提问作者조윤서

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 22:30:53