C语言求和函数示例
下面我将编写两个不同的求和函数,分别演示不同的求和方式。

(图片来源网络,侵删)
数组元素求和
#include <stdio.h>
// 函数1:计算整型数组的所有元素之和
int arraySum(int arr[], int size) {
int sum = 0;
for (int i = 0; i < size; i++) {
sum += arr[i];
}
return sum;
}
int main() {
int numbers[] = {1, 2, 3, 4, 5};
int size = sizeof(numbers) / sizeof(numbers[0]);
int result = arraySum(numbers, size);
printf("数组元素之和为: %d\n", result);
return 0;
}
使用指针进行求和
#include <stdio.h>
// 函数2:使用指针计算数组元素之和
int pointerSum(int *arr, int size) {
int sum = 0;
int *ptr = arr; // 指向数组首元素
for (int i = 0; i < size; i++) {
sum += *ptr; // 解引用指针获取值
ptr++; // 移动指针到下一个元素
}
return sum;
}
int main() {
int numbers[] = {10, 20, 30, 40, 50};
int size = sizeof(numbers) / sizeof(numbers[0]);
int result = pointerSum(numbers, size);
printf("使用指针求和结果为: %d\n", result);
return 0;
}
递归实现求和
#include <stdio.h>
// 函数3:递归计算数组元素之和
int recursiveSum(int arr[], int size) {
if (size == 0) {
return 0;
} else {
return arr[size - 1] + recursiveSum(arr, size - 1);
}
}
int main() {
int numbers[] = {1, 3, 5, 7, 9};
int size = sizeof(numbers) / sizeof(numbers[0]);
int result = recursiveSum(numbers, size);
printf("递归求和结果为: %d\n", result);
return 0;
}
可变参数求和
#include <stdio.h>
#include <stdarg.h>
// 函数4:计算可变参数列表的和
int variableSum(int count, ...) {
va_list args;
va_start(args, count);
int sum = 0;
for (int i = 0; i < count; i++) {
sum += va_arg(args, int);
}
va_end(args);
return sum;
}
int main() {
int result = variableSum(5, 1, 2, 3, 4, 5);
printf("可变参数求和结果为: %d\n", result);
return 0;
}
提供了四种不同的求和函数实现方式:
- 数组索引方式
- 指针遍历方式
- 递归方式
- 可变参数方式
每种方法都有其适用场景:
- 数组索引方式最直观易懂
- 指针方式效率更高
- 递归方式简洁但可能栈溢出
- 可变参数方式灵活但类型不安全
你可以根据具体需求选择合适的实现方式。

(图片来源网络,侵删)
