在本教程中,我们将学习以下两种方法来找出数组元素的总和:
1)使用递归
2)使用指针
方法 1:使用递归的数组元素的总和:函数调用自身
该程序调用用户定义的函数sum_array_elements()
,函数以递归方式调用自身。这里我们对数组元素进行了硬编码,但是如果你想让用户输入值,你可以使用for
循环和scanf
函数,就像我在本文的下一节(方法 2:使用指针)中所做的那样。
#include<stdio.h>
int main()
{
int array[] = {1,2,3,4,5,6,7};
int sum;
sum = sum_array_elements(array,6);
printf("\nSum of array elements is:%d",sum);
return 0;
}
int sum_array_elements( int arr[], int n ) {
if (n < 0) {
//base case:
return 0;
} else{
//Recursion: calling itself
return arr[n] + sum_array_elements(arr, n-1);
}
}
输出:
Sum of array elements is:28
方法 2:使用指针的数组元素的总和
这里我们设置指向数组基址的指针然后我们递增指针并使用*
运算符来获取和汇总所有数组元素的值。
#include<stdio.h>
int main()
{
int array[5];
int i,sum=0;
int *ptr;
printf("\nEnter array elements (5 integer values):");
for(i=0;i<5;i++)
scanf("%d",&array[i]);
/* array is equal to base address
* array = &array[0] */
ptr = array;
for(i=0;i<5;i++)
{
//*ptr refers to the value at address
sum = sum + *ptr;
ptr++;
}
printf("\nThe sum is: %d",sum);
}
输出:
Enter array elements (5 integer values): 1 2 3 4 5
The sum is: 15