C语言问题:有一个10个组元的整型数组,要求编一个函数,它能够将从指定位置开始的n个数求和。要求形参用指针变量接收实参的数组。a[]={0,1,2,3,4,5,6,7,8,9}求解
可以在函数中先判断输入的参数是否会导致数组越界,然后再用一个for循环计算从指定数组位置开始的n个数的和,最后返回这个结果即可,代码如下:
#include <stdio.h>
#include <stdlib.h>
// arr 指向数组的指针
// length 数组的长度
// pos 从数组哪个位置开始计算
// n 需要计算多少个元素的值
int arrPosSum(int * arr,int length,int pos, int n){
int i,sum=0;
//如果参数超出数组范围,则提示错误信息,并退出程序
if(((pos+n)>length)||(pos>=length||pos<0)||(n<0||n>length)){
printf("参数不正确,数组越界,程序退出!\n");
exit(-1);
}
// 从起始坐标pos开始, 计算n个元素的和
for(i=pos;i<(pos+n);i++){
sum+=arr[i];
}
// 返回结果
return sum;
}
int main(void){
int a[10]={0,1,2,3,4,5,6,7,8,9};
int pos=9;
int n=1;
int sum=arrPosSum(a,10,pos,n);
printf("数组a从位置%d开始的%d个元素的和是:%d\n",pos,n,sum);
// printf("1");
return 0;
}