c语言编写程序实现求一维数组(8个元素)元素之和。
要求用数组名作为函数形参,在子函数中实现求和,在主函数中输出结果这是我写出来的#include<stdio.h>intl(inta[7]){inti=0,j=0;for(...
要求用数组名作为函数形参,在子函数中实现求和,在主函数中输出结果
这是我写出来的
#include<stdio.h>
int l(int a[7])
{int i=0,j=0;
for(;i<=7;i++)
j=j+a[i];
return j;
}
void main()
{
int b[7],n=0,m=0,c;
for(;n<=7;n++)
scanf("%d",&b[n]);
c=l(b);
printf("%d",c);
}
运行完了之后可以求和,但是程序会报错。
另外希望大家写一下通过指针怎么写这道题。 展开
这是我写出来的
#include<stdio.h>
int l(int a[7])
{int i=0,j=0;
for(;i<=7;i++)
j=j+a[i];
return j;
}
void main()
{
int b[7],n=0,m=0,c;
for(;n<=7;n++)
scanf("%d",&b[n]);
c=l(b);
printf("%d",c);
}
运行完了之后可以求和,但是程序会报错。
另外希望大家写一下通过指针怎么写这道题。 展开
展开全部
你的数组只有定义了维数为7,但是你却往b地址开始的内存里面读入了8个数,然后算的时候,也是算的8个数字的和,所以会出错,。 修改办法:把两处<=7 都改成 <7 就行了!
int l( int* a, int num )
{
int i=0,j=0;
for(;i<num;i++)
j=j+a[i];
return j;
}
void main()
{
int b[7] = { 0 };
for ( int i = 0; i < 7; ++i )
{
scanf( "%d", &b[i] );
}
int kk = l( b, 7 );
printf( "%d", kk );
system("pause");
}
int l( int* a, int num )
{
int i=0,j=0;
for(;i<num;i++)
j=j+a[i];
return j;
}
void main()
{
int b[7] = { 0 };
for ( int i = 0; i < 7; ++i )
{
scanf( "%d", &b[i] );
}
int kk = l( b, 7 );
printf( "%d", kk );
system("pause");
}
追问
b[0]到b[7]不是8个么?
追答
定义b[7]的意思就是说这是个包含7个元素的数组,只能是b[0]到b[6]。[]里面的数字代表这个数组有多少个元素,最后一个元素的下标是[]里面的数字-1。比如定义int a[44],表示有44个元素,最后一个元素是a[43]。
展开全部
你的之所以报错,是由于你定义的数组int b[7].(可以操作b[0]-b[6])
而你用for(;n<=7;n++) 的时候会出现scanf("%d",&b[7]); 这样就数组下标越界了。。
通过指针把求和函数的形参改为指针就可以了。
int getSum(int *array,int endIndex){
int sum=0;
for(int i=0;i<endIndex;i++){
sum+=array[i];
}
return sum;
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询