先获取数组长度,然后用for循环,从数组中获取值进行累加求和。
创新互联长期为上1000+客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为铁山企业提供专业的成都网站建设、成都网站制作,铁山网站改版等技术服务。拥有十余年丰富建站经验和众多成功案例,为您定制开发。
#include
#include
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;
}
扩展资料:
一个数组中的所有元素具有相同的数据类型(在C、C++、Java、pascal中都这样。但也并非所有涉及数组的地方都这样,比如在Visual Foxpro中的数组就并没这样的要求)。当然,当数据类型为 Variant 时,各个元素能够包含不同种类的数据(对象、字符串、数值等等)。可以声明任何基本数据类型的数组,包括用户自定义类型和对象变量。
如果要用户输入的是一个数组,一般是用一个循环,但是在输入前也需要固定数组的大小。
compact跟变长数组没有太大的关系,也应该用不到变长数组。因为一般的传数组到函数中就是传数组的地址和元素的个数的,那只是一个提示,不是要求。
参考资料来源:百度百科-数组
供参考:
#include "stdio.h"
#define DIM 5
float avg(float* num,int dim)
{
float num_z=0.0;
for(int k=0;kdim;k++)
num_z=num_z+num[k];
return num_z/dim;
}
void move(float* num_big,float* num_small,float* num_s,int dim,int* j)
{
float avg_tmp=avg(num_s,dim);
for(int k=0;kdim;k++)
{
if(num_s[k]-avg_tmp0)
{
*num_big=num_s[k];
num_big++;
(*j)++;
}
else
{
*num_small=num_s[k];
num_small++;
}
}
}
float sum(float* num,int dim)
{
float num_z=0.0;
for(int k=0;kdim;k++)
num_z=num_z+num[k];
return num_z;
}
void main()
{
float number[DIM],big[DIM],small[DIM];
int i,j=0;
for(i=1;iDIM+1;i++)
{
printf("输入第%d个数据:",i);
scanf("%f",number[i-1]);
fflush(stdin);
}
printf("输入数据是:\n");
for(i=0;iDIM;i++)
{
printf("%f\n",number[i]);
}
printf("平均数是:\n%f\n",avg(number,DIM));
move(big,small,number,DIM,j);
printf("大于平均数的%d个数是:\n",j);
for(i=0;ij;i++)printf("%f\n",big[i]);
printf("不大于平均数的%d个数是:\n",DIM-j);
for(i=0;iDIM-j;i++)printf("%f\n",small[i]);
printf("总和是:\n%f\n",sum(number,DIM));
getchar();
}
遍历数组,累加到和值对应的变量上即可。
代码如下:
int sum(int *a, int l)//对数组a的前l个元素求和,并返回和值。
{
int r = 0;
int i;
for(i=0;il;++i)
r+=a[i];
return r;
}
int i,n,s=0;
在一维数组a中有n个需要求和的元素;
for(i=0;in;i++)
s+=a[i];
printf("%d\n",s);
或:
int i,j,n,m,s=0;
在二维数组a中有n*m个需要求和的元素;
for(i=0;in;i++)
for(j=0;jm;j++)
s+=a[i][j];
printf("%d\n",s);
输出语句就能输出求和的结果(不发生溢出时)。
#includestdio.h
int sum_arry(int *p,int n)
{
int i = 0,sum = 0;
for(i=0;in;i++)
{
sum += *(p+i);
}
return sum;
}
int main(void)
{
int a[20];
int i = 0;
printf("请输入20个数字:\n");
for(i=0;i20;i++)
scanf("%d",a[i]);
printf("a[0]到a[5]的和为:%d\n",sum_arry(a[0],6));
printf("a[3]到a[8]的和为:%d\n",sum_arry(a[3],6));
return 0;
}
如果是求两个数值的和,就很简单了,参看上面回答,如果是求数组的和应该这样:
/**功能:求数组的和
返回参数: 数组类型a,整数n代表数组中含有多少个元素
传入参数: 数组的和
*/
float g(float a[],int n)
{
float s=0;
if(n==1)
return a[1];
else if(n=0){ /*这种情况不可能发生,只是用于演示*/
printf("the code is full of errors,the programme will exit");
exit(0);
}
else {
s=a[n];
a[n]=0;
return (s+g(a,n-1));
}
}