我试图找到数组中所有正数的总和。到目前为止,我已经提出了这个问题;
int largest_sum_sequence(int list, int size)
{
int sum = 0, *index = 0;
for (index < size; index = size; index++)
{
if (list[index] > 0)
{
sum = sum + list[index];
}
}
printf("%d", sum);
return sum;
}
我的程序一直在崩溃。我很确定它与索引有关。每当我使用list [index]时,它表示我需要使用指针作为索引,但我不知道如何正确地做到这一点。感谢帮助!
答案 0 :(得分:0)
您不希望索引成为指针,并且您的for循环不正确。尝试:
int sum = 0, index = 0;
for (; index < size; index++)
答案 1 :(得分:0)
函数参数不包括数组。 我写的快速功能。
int getSums(int myArray[], int size)
{
int total = 0;
int index = size;
for ( int i = 0; i < index; i++)
{
if (myArray[i] > 0)
total += myArray[i];
}
return ( total );
};
答案 2 :(得分:0)
编译器实际上告诉您该做什么。 首先,您需要一个数组或一个指针作为参数,如
int largest_sum_sequence(int *list, int size)
{
....
}
或
int largest_sum_sequence(int list[], int size)
{
....
}
后者可能更容易阅读。
第二件事是,您不希望使用指针遍历列表进行迭代,而是使用简单整数进行迭代。
所以你宣布
int sum = 0, index = 0;
for()循环也不完全正确。不是初始化某些东西,而是测试index < size
是否丢弃结果。这在语法上是正确的,但没有意义。
for-statement的第一部分在循环开始之前执行,但不影响启动本身。它用于初始化循环变量(在这种情况下为索引)。第二部分是终止条件。如果条件计算结果为false,则循环终止。循环的最后一部分用于递增(或递减,更抽象,更改)循环变量。
话虽如此,它看起来应该是显而易见的:
for (index = 0; index < size; ++index) {
....
}
假设您的列表不是很长(总和可能超过2^{31} - 1
),其余的都是正确的。虽然我会在printf()模式中添加\n
。
列表来自哪里?无法从你的代码中回答这个问题,但你也有错误的余地: - )