重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
先获取数组长度,然后用for循环,从数组中获取值进行累加求和。
袁州ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联建站的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:028-86922220(备注:SSL证书合作)期待与您的合作!
#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跟变长数组没有太大的关系,也应该用不到变长数组。因为一般的传数组到函数中就是传数组的地址和元素的个数的,那只是一个提示,不是要求。
参考资料来源:百度百科-数组
C语言实现并行求和算法:
1、问题描述
将数组A均匀划分成m个片段,每个数组片段最多有(n+m-1)/m 个元素。每个数组片段分别由一个线程负责局部求和,最后这些部分和加起来就得到数组中所有元素的总和。
2、代码书写
3、注意事项
C语言中不允许动态数组类型。例如: int n;scanf("%d",n);int a[n]; 用变量表示长度,想对数组的大小作动态说明,这是错误的。这里使用malloc 向系统申请分配指定size个字节的内存空间。void* 类型可以强制转换为任何其它类型的指针。
void类型转换
malloc返回类型是 void* 类型:这并不是说该函数调用后无返回值,而是返回一个结点的地址,该地址的类型为void,即一段存储区的首址,其具体类型无法确定,只有使用时根据各个域值数据再确定。可以用强转的方法将其转换为别的类型。
向系统申请10个连续的int类型的存储空间,用指针pi指向这个连续的空间的首地址。并且用(int*)对malloc的返回类型进行转换,以便把int类型数据的地址赋值给指针pi。
例如:
int *pd=NULL;
pi=(int *)malloc(N*sizeof(int)).
先说个题外话,您认为k=add(i,j)比k=i+j简单吗? 回到正题,问题出在scanf,改成scanf("%d%d", i, j);就可以了。如果不改,那么你输入就应该这样(例如):3,5。输出结果:8。也就是说,你必须在输入时输入两个数,并且以“,”隔开。还有个问题,你的getchar不会使程序暂停,因为输入队列中的“\"传入了getchar,你可以再加一个getchar,或者先清空输入队列,用scanf输入函数使之停顿。也可以,或者改用system("pause")暂停程序。