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; }
方法二:直接求和(更简单高效)
其实你已经拿到了三个单独的数字n1、n2、n3,完全不用绕到字符串这一步,直接相加就能得到结果:
#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




