You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

C语言中三个整数拼接实现及各位数字求和问题求助

如何拼接三个整数变量为字符串并计算各位数字之和?

嘿,我看你想把三个整数变量拼接成字符串后再计算各位数字之和,这思路没问题,不过其实还有更直接的方法,先一步步帮你解决拼接的问题,再给你优化方案~

方法一:用sprintf()拼接字符串再求和

在C语言里,sprintf()函数可以帮你把多个格式化的数据写入字符串,刚好能用来拼接你的三个数字变量。这里补全并修改你的代码,实现需求:

#include <stdio.h>

int main() {
    int n1, n2, n3, sum = 0;
    char combined_str[4]; // 三位数+字符串结束符,长度4足够

    printf("Enter three digits separated by spaces: ");
    // 读取三个空格分隔的数字,注意用%d匹配int类型变量
    scanf("%d %d %d", &n1, &n2, &n3);

    // 把三个数字拼接成字符串,比如n1=1,n2=2,n3=3会得到"123"
    sprintf(combined_str, "%d%d%d", n1, n2, n3);

    // 遍历字符串,将每个字符转为数字求和
    for (int i = 0; combined_str[i] != '\0'; i++) {
        // 字符'0'-'9'的ASCII值连续,减去'0'就能得到对应数字
        sum += combined_str[i] - '0';
    }

    printf("Sum of digits: %d\n", sum);
    return 0;
}

方法二:直接求和(更简单高效)

其实你已经拿到了三个单独的数字n1n2n3,完全不用绕到字符串这一步,直接相加就能得到结果:

#include <stdio.h>

int main() {
    int n1, n2, n3, sum;

    printf("Enter three digits separated by spaces: ");
    scanf("%d %d %d", &n1, &n2, &n3);

    sum = n1 + n2 + n3; // 直接求和,一步到位

    printf("Sum of digits: %d\n", sum);
    return 0;
}

注意事项

  • 你原来代码里的scanf("%ld", &n1)是读取长整型,但你的变量是int类型,会不匹配,改成%d就好;另外要读取三个数字,得写成%d %d %d来匹配三个变量。
  • 如果用字符串拼接的方法,要保证字符串数组的长度足够,三位数的话定义长度4就够(留一个位置给字符串结束符\0)。

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

火山引擎 最新活动