Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
数组C中正整数的和_C_Arrays_Sum - Fatal编程技术网

数组C中正整数的和

数组C中正整数的和,c,arrays,sum,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]; }

我试图找到数组中所有正数的和。到目前为止,我已经想到了这个

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

您不希望索引是指针,并且for循环不正确。尝试:

int sum = 0, index = 0;
for (; index < size; index++)

函数参数不包含数组。 我写的快速函数

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 );
};

编译器会确切地告诉您要做什么。 首先,您需要一个数组或指针作为参数,如

int largest_sum_sequence(int *list, int size)
{
    ....
}

后者可能更容易阅读

第二件事是,您不希望使用指针在列表中进行迭代,而更希望使用简单的整数

所以你声明

int sum = 0, index = 0;
for循环也不太正确。您可以测试索引是否<大小并放弃结果,而不是初始化某些内容。这在语法上是正确的,但没有意义

for语句中的第一部分在循环开始之前执行,但不影响启动本身。在这种情况下,它用于初始化循环变量索引。第二部分是终止条件。如果条件的计算结果为false,则循环终止。循环的最后一部分用于递增或递减(更抽象)更改循环变量

话虽如此,但很明显它应该是这样的:

for (index = 0; index < size; ++index) {
    ....
}
假设您的列表不是很长,因此总和可能超过2^{31}-1,那么其余的是正确的。尽管我想在printf模式中添加一个\n


这份名单来自哪里?无法从代码中回答这个问题,但这里也有错误的空间:-

如果我这样做,每次使用list[index]它都无法正确构建。告诉我索引必须有指向object type.Heh的指针。多么令人困惑的信息啊。正如Jeff所说,从根本上来说,你想要一个int*作为你的“列表”。编译器之所以说“index”必须有一个指向对象类型的指针,是因为数组下标在C中是可交换的。您希望列表为int*。索引不应该是指针。非常感谢!我想是我做了那样的蠢事。我们刚开始在课堂上学习数组,所以我还在努力学习;指数=大小;index++不是编写“for”语句的方法。序列是初始化器;继续状态;步进机。所以这个语句应该是:for index=0;指数<大小;index++此行:int-maximust\u-sum\u-sequenceint-list,int-size应该是:int-maximust\u-sum\u-sequenceint*list,int-sizeHello。请测试你的代码,你会发现它不能正常工作。
for (index = 0; index < size; ++index) {
    ....
}