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

如何用C语言打印整数各位数字并以加号分隔?

实现整数各位数字带加号格式的求和输出

现有一段C语言代码可计算用户输入整数的各位数字之和,当前输出格式为「12345 = 15」,需修改代码实现输出格式「1 + 2 + 3 + 4 + 5 = 15」,即打印整数的各位数字并在中间添加加号,同时保留求和结果输出。原始代码如下:

#include <stdio.h>

int sum(int n); //Prototype

int main(void){
    int number;
    printf("Enter number: ");
    scanf("%d", &number);
    printf("%d = %d\n", number, sum(number));
}

//Sum Function
int sum(int n){
    int total = 0;
    while (n != 0)
    {
        total += n % 10;
        n /= 10;
    }
    return total;
}

修改思路

要实现目标输出,核心是先拆分整数的每一位数字并按原顺序存储,再依次输出数字并添加加号分隔,最后输出求和结果。因为通过n%10拆分数字时是从个位开始取,所以需要先把各位数字存入数组,再倒序输出才能匹配原数的高位到低位顺序。

修改后的代码

#include <stdio.h>

int sum(int n);
void print_digits_with_plus(int n);

int main(void){
    int number;
    printf("Enter number: ");
    scanf("%d", &number);
    
    // 处理负数情况:先输出负号再处理绝对值
    if (number < 0) {
        printf("-");
        number = -number;
    }
    
    print_digits_with_plus(number);
    printf(" = %d\n", sum(number));
}

// 打印各位数字并添加加号分隔
void print_digits_with_plus(int n){
    int digits[10]; // 假设整数最多10位,可根据需求调整长度
    int count = 0;
    
    // 处理输入为0的特殊情况
    if (n == 0) {
        printf("0");
        return;
    }
    
    // 拆分各位数字存入数组
    while (n != 0) {
        digits[count++] = n % 10;
        n /= 10;
    }
    
    // 倒序输出数字,仅在非最后一位后添加加号
    for (int i = count - 1; i >= 0; i--) {
        printf("%d", digits[i]);
        if (i != 0) {
            printf(" + ");
        }
    }
}

// 计算各位数字之和
int sum(int n){
    int total = 0;
    // 统一处理负数,确保求和正确
    n = n < 0 ? -n : n;
    while (n != 0)
    {
        total += n % 10;
        n /= 10;
    }
    return total;
}

关键改动说明

  1. 新增print_digits_with_plus函数,专门负责拆分数字并按要求格式输出:
    • 用数组存储拆分后的各位数字,解决从个位取数导致的顺序颠倒问题;
    • 单独处理输入为0的特殊情况,避免无输出;
    • 倒序遍历数组输出数字,仅在非最后一位后添加加号,保证格式正确。
  2. 完善sum函数,增加对负数的处理逻辑,确保无论输入正负都能正确计算各位和。
  3. 在main函数中处理负数输入,先输出负号再处理绝对值部分,保证负数的输出格式符合预期。

内容的提问来源于stack exchange,提问作者CalvinChua

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 17:27:37