C语言数组如何进行元素求和?

如题,请高手给出思路或程序。

遍历数组,累加到和值对应的变量上即可。

代码如下:

int sum(int *a, int l)//对数组a的前l个元素求和,并返回和值。
{
    int r = 0;
    int i;
    for(i=0;i<l;++i)
        r+=a[i];
    return r;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-03-15
#include<stdio.h>
#include<malloc.h>
int main()
{
int n;
int val;
int * a;
int sun = 0, i;
printf("请输入数组的长度:");
scanf("%d", &n);
printf("\n");
a = (int *)malloc(n * sizeof(int));//为数组a动态分配内存
for(i = 0; i < n; i++)
{
printf("请输入数组的第%d个元素的值:", i+1);
scanf("%d", &val);
printf("\n");
a[i] = val;
}
for (i = 0; i < n; i++)
{
sun+=a[i];//sun+=a[i]相当于sun=sun+a[i];
}
printf("sun = %d\n",sun);
free(a);//释放a动态分配的内存
return 0;
}本回答被提问者和网友采纳
第2个回答  2010-01-08
scanf("%d",&a[1]);
输入的值将被加入到数组第二个元素。
而你后面的语句却是:
for(i=0;i<1;i++)
{s=s+a[i];}

其中a[0] 就是个空值.相加当然产生个错误值。

改成a[5]更错了, a[5]数组长度5 ,索引是0..4 , a[5]越界了.

记住基础的原则:在局部域定义的变量必须手工初始化。
养成好习惯,谢谢。
第3个回答  2013-04-26
先求出一个数组前21个数{1,2,3,5,8,13,21 ... },关系是加1,加2,加3的关系,可以用循环:
int a[21];
int i=0;
int num = 1;
a[0] = 1;

for(i=1;i<21;i++){
a[i] = a[i-1] + num;
num++;

}
然后通过组合求出你所需要的结果。
第4个回答  2012-08-05
#include<stdio.h>
void main()
{
int i;
int a[3]={1,3,5},s=0;
for(i=0;i<3;i++)
s=s+a[i];
printf("s=%d",s);
}追问

还有就是如何声明一个数组 其大小为变量?

相似回答