Проблема не в том, сколько номеров вы храните, а в том, где вы их храните;вы храните 101 в a[101]
, что явно неправильно.
Если i: th нечетное число - C, правильный индекс - i-1, а не C.
Наиболее читаемым изменением, вероятно, является введение новой переменной счетчика.
int main() {
int a[100] = {0};
int count = 0;
for (int number = 1; number < 200; number++) {
if (number % 2 == 1) {
a[count] = number;
count += 1;
}
}
}
Я думаю, что преобразование этого из задачи поиска в проблему генерации облегчает получение правильных ответов.
Если вам случится вспомнить, что каждое нечетное число C
может быть записано наформа 2 * A + 1
для некоторого A
, вы увидите, что искомая последовательность:
2*0+1, 2*1+1, 2*2+1, ..., 2*99+1
, поэтому
int main()
{
int numbers[100] = {0};
for (int i = 0; i < 100; i++)
{
numbers[i] = 2 * i + 1;
}
}
Вы также можете пойти другим путемвокруг, перебирая нечетные числа и сохраняя их в нужном месте:
int main()
{
int numbers[100] = {0};
for (int i = 1; i < 200; i += 2) // This loops over the odd numbers.
{
numbers[i/2] = i; // Integer division makes this work.
}
}