题目
描述
牛牛学习了指针相关的知识,想实现一个 int cal(int *array,int n) 的函数求出长度为 n 的数组的和。
输入描述:
第一行输入一个正整数 n ,表示数组的长度
第二行输入 n 个正整数,表示数组中每个数字的值
输出描述:
实现 int cal(int *array,int n) 求出数组array的和
示例1
输入:
5 2 8 1 9 5
输出:
25
代码
此题属于入门题
第一行输入一个正整数 n ,表示数组的长度:
int num; scanf("%d", &num);
第二行输入 n 个正整数,表示数组中每个数字的值:
int arr[num]; for(int i = 0; i < num; i++) { scanf("%d", &arr[i]); }
输入:
5 2 8 1 9 5
函数定义:
int cal(int *array, int n) { int sum = 0; int* ptr = array; for(int i = 0; i < n; i++) { sum += *(ptr + i); } return sum; }
指针的用法可以参考上一篇博客。这里表达式 *(ptr+i) 表示当前指针指向的地址向后偏移 i 个位置。
调用函数并输出最终结果:
int sum = cal(arr, num); cout << sum;
完整代码:
#include<iostream> using namespace std; int cal(int *array, int n) { int sum = 0; int* ptr = array; for(int i = 0; i < n; i++) { sum += *(ptr + i); } return sum; } int main() { int num; scanf("%d", &num); int arr[num]; for(int i = 0; i < num; i++) { scanf("%d", &arr[i]); } int sum = cal(arr, num); cout << sum; return 0; }
输出:
25