#include<stdio.h>
#include<stdlib.h>
Большинство людей добавит пространство здесь:
#include <stdio.h>
#include <stdlib.h>
.
int cd_function(int n, int sum)
{
if(sum >= 1000)
return 0;
if(n%3 == 0 || n%5 == 0)
sum + return cd_function(n, sum);
}
Существует два способа, чтобы иметь эти функции добавляют п просуммировать: либо пропускание суммы в качестве указателя (ссылок), это будет сделано так:
void cd_function(int n, int * sum) {
// if (*sum >= 1000) - no need to test this here
if (!n%3 || !n%5) {
*sum += stuff;
}
}
или имеющая функцию вернуть новую сумму:
int cd_function(int n, int sum) {
// if (sum >= 1000) - no need to test this here
if (!n%3 || !n%5) {
return sum + stuff;
} else {
return sum;
}
}
Теперь sum + return cd_function(n, sum);
неправильно, МКЦ уже сказал это в своем комментарии. Поэтому вы должны либо использовать *sum += n;
, либо return sum + n;
(т. Е. Заменить stuff
на n
выше).
int main(void)
{
int i, iter, sum = 0;
Поскольку вам не нужно iter
, избавиться от него:
int i, sum = 0;
for(i = 0; i < cd_function(iter, sum); i++)
sum++;
а. Если вы хотите суммировать некоторые [tm] i
s, то вы не должны увеличивать sum
на каждой итерации.
for (i = 0; i < cd_function(iter, sum); i++)
;
b. Затем вы должны получить правильное условие выхода. Вы хотели бы суммировать все, пока не достигнете суммы> = 1000, поэтому напишите, что при условии:
for (i = 0; sum < 1000; i++)
/* ??? i < cd_function(iter, sum) */;
c. В зависимости от реализации cd_function вы выбираете из выше, вы бы сейчас либо уравнять
cd_function(i, &sum);
или
sum = cd_function(i, sum);
д. И, наконец, вы должны добавить фигурные скобки, даже есть только один оператор:
for (i = 0; sum < 1000; i++) {
// option 1
cd_function(i, &sum);
// option 2
sum = cd_function(i, sum);
}
остальное нормально:
return 0;
}
Проходите неинициализированный 'iter' переменную' cd_function() '. – YSC
'sum + return ...' не то, что вы ожидаете – YSC
Пожалуйста, перечитайте заявление о проблеме. Вы не останавливаетесь, когда сумма достигает 1000. – dasblinkenlight