数组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) {
....
}