编写对具有n个元素的一维数组求和函数ArraySum(),要求用指针作为函数参数,并在主函数mai

#include<stdio.h>

void intput(int *p[10],int n)
{void arraysum(int *p,int n);
int i;
for(i=0;i<n;i++)
scanf("%d",p+i);

}
void arraysum(int *p,int n)

{
float sum;
int i;
for(i=0;i<n;i++)
sum=sum+(*p);

}
int main()
{
void intput(int *p[10],int n);

int *a[10],n=10;
intput(a,10);
printf("sum=%d",intput);
return 0;
}我哪里错了呀

代码修改及运行结果如下:
#include<stdio.h>
void intput(int *p,int n)//参数类型错误
{
//void arraysum(int *p,int n);//没用吧
int i;
for(i=0;i<n;i++)
scanf("%d",p+i);
}
float arraysum(int *p,int n)//返回类型不正确
{
float sum=0;//未初始化
int i;
for(i=0;i<n;i++)
sum=sum+(*p++);
return sum;//返回结果?
}
int main()
{
int a[10],n=10;//你这*号的意义是什么,你没搞清吧
intput(a,n);
printf("sum=%f",arraysum(a,n));//调用错误
return 0;
}追答

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-01-04

问题很多,你没发现你根本没调用过arraysum么,另外,arraysum本身没返回求和,而且sum也没初始值,改动如下

#include<stdio.h>
void intput(int *p,int n) {
    int i;
    for(i=0; i<n; i++)
        scanf("%d",p+i);
}
int arraysum(int *p,int n)
{
    int sum=0;
    int i;
    for(i=0; i<n; i++)
        sum+=*(p+i);
    return sum;
}
int main() {
    int a[10],n=10;
    intput(a,n);
    printf("sum=%d",arraysum(a,n));
    return 0;
}

相似回答