关于#c语言#的问题:有一个10个组元的整型数组,它能够将从指定位置开始的n个数求和。要求形参用指针变量接收实参的数组。a[]={0,1,2,3,4,5,6,7,8,9}求解

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;
}

img