数组C中的正整数之和

时间:2014-10-23 20:50:18

标签: c arrays sum

我试图找到数组中所有正数的总和。到目前为止,我已经提出了这个问题;

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]时,它表示我需要使用指针作为索引,但我不知道如何正确地做到这一点。感谢帮助!

3 个答案:

答案 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

列表来自哪里?无法从你的代码中回答这个问题,但你也有错误的余地: - )