【发布时间】:2021-04-06 12:18:11
【问题描述】:
我在编程方面有点菜鸟,这就是为什么我在为这个相当简单的代码而苦苦挣扎。 我们的任务是使用函数对数组的所有元素求和。 该函数应该打印出数组,然后将其元素相加并将其和返回给主数组。 应该在那里打印。 我认为它一直在工作,直到它达到功能为止。
阅读了很多关于这个问题的其他帖子,但我仍然无法理解解决方案。 我的编译器还告诉我“分段错误(核心转储)”。我真的很困惑。
这是我的代码:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define MAX 9 // i think the math one is a bit unneccessary but well
int sum(int array[], int size)
{
int i;
int sum = 0;
for (i = 0; i <= MAX; i++)
{
printf("\n%d", array[i]);
}
for (i = 0; i <= MAX; i++)
{
sum = sum + array[i];
}
return sum;
}
int main()
{
int i;
int array[MAX];
int size;
for (i = 1; i <= 10; i++)
{
printf("\nGeben Sie die %d. Zahl ein: ", i); // Its in german, basically saying the user should fill the array, starting with the 1. element
scanf("%d", &array[i - 1]);
}
sum(array[MAX], size);
printf("%d", size);
return 0;
}
帮助我真的很好。 谢谢!
【问题讨论】:
-
如果您有一个包含 MAX 个元素的数组,则有效索引为 0 - MAX-1。
-
for (i = 1; i <= 10; i++)->for (i = 1; i <= 9; i++)。最好还是使用更标准的基于 0 的计数器:for (i = 0; i < MAX; i++) scanf("%d", &array[i]); -
@sam3004 你的函数没有使用参数大小,传递的参数大小没有初始化。
-
sum(array[MAX], size);->sum(array, size);。由于类型不兼容,编译器应该给你一个警告。始终注意警告。
标签: arrays c for-loop sum function-definition