【发布时间】:2022-01-03 09:26:59
【问题描述】:
#include <stdio.h>
int sumofArrayNum(int numList[]);
int main(){
int result,numList[]={23,32,54,23,54,32,3,35};
result = sumofArrayNum(numList);
printf("sum= %d", result);
return 0;
}
int sumofArrayNum(int numList[]){
int sum = 0;
for(int i = 0; i < 10; ++i){
sum += numList[i];
}
return sum;
}
每次构建和运行它时输出都不同。 例如。输出为 sum = 1032918821
我想要的预期输出是 sum = 256
【问题讨论】:
-
数组中有多少个元素?你数了多少元素?
-
数组内最多 10 个元素。是不是因为我将值设置为10,所以我必须输入10个元素。输入会更好解决这个问题
-
它不能遍历一个只有 8 个元素的数组 10 次。你认为不存在的元素来自哪里?当您的数组仅包含 8 个时,没有 所有 10 个元素 可以求和。想想看。如果你在一张纸的一栏中写 8 个数字,你怎么能把 10 个数字相加?你不能,因为第 9 个和第 10 个数字不存在。在编程中,您正在读取的那些额外的两个不存在的元素是从未初始化的堆栈内存中读取的,这意味着它们是垃圾,这就是为什么您每次都会得到不同的总数。
-
没有。更好的解决方案是修改求和函数以接受第二个参数,即数组的长度。然后,您可以将其用作循环的终止条件,允许您将任何大小的数组传递给函数。
-
我已经为您提供了您需要的信息。努力自己实现它 - 与我为你做相比,你会学到更多。
标签: c function parameters sum