C语言中如何累加函数返回值?长整型各位数字求和疑问
长整型各位数字求和实现方案
核心思路其实很简单:没必要先把所有数字都返回再求和,在逐位分离的过程中直接累加就行,既省内存又高效。
直接累加的实现(以C语言为例)
这是最常用的写法,不需要额外存储所有数字:
long sum_digits(long num) { long sum = 0; // 处理负数,数字正负不影响各位和 num = num < 0 ? -num : num; while (num > 0) { sum += num % 10; // 取当前最后一位加到总和里 num = num / 10; // 去掉最后一位,继续处理剩下的数字 } return sum; }
如果必须先收集所有数字再求和
要是你因为其他需求,必须先把各位数字存起来再累加,也可以用数组暂存:
#include <stdio.h> long sum_digits_collect(long num) { int digits[20]; // 长整型最多19位,数组足够存 int digit_count = 0; long total = 0; num = num < 0 ? -num : num; // 收集各位数字(和你之前打印的逻辑一致) while (num > 0) { digits[digit_count++] = num % 10; // 这里可以保留你原来的打印代码:printf("%d ", digits[digit_count-1]); num /= 10; } // 遍历数组累加求和 for (int i = 0; i < digit_count; i++) { total += digits[i]; } return total; }
不管用哪种方式,最终都能直接返回各位数字的总和,不需要单独返回每个数字再处理。
内容的提问来源于stack exchange,提问作者Joseph J Filoramo
相关产品推荐
相关产品推荐

