Как напечатать правильный вывод, используя "while l oop"? - PullRequest
2 голосов
/ 27 апреля 2020

Ожидаемый результат - 2000, но он останавливается в 1980 году.

Примечание: выполнение начинается с 20 , а не с 0 как int i = 1

Код:

#include <iostream>
using namespace std;
int main() {
  const int iarraysize = 100;
  int i = 1;
  int iarray[iarraysize];
  while (i < iarraysize) {
    iarray[i] = 20 * i;
    cout << iarray[i++] << "\n";
  }
}

Ответы [ 3 ]

2 голосов
/ 27 апреля 2020

Массивы начинаются с 0 и заканчиваются на один раньше их размера.

Однако вам не нужен массив.

#include <iostream>
int main()
{
    int limit = 100;
    int i = 1;
    while (i <= limit)
    {
        std::cout << (i++ * 20) << "\n";
    }
}
2 голосов
/ 27 апреля 2020

Массив идет от 0 до 99, вы начинаете с 1, и он только до 99 (99 * 20 = 1980).

Вы ожидаете 2000, но нет iarray[100] (массив из границы).

1 голос
/ 27 апреля 2020

Последнее значение переменной i, которое меньше 100, равно 99. Таким образом, 20 * 99 равно 1990.

Если вы хотите получить 2000, то переписайте l oop как

int i = 0;
while (i < iarraysize) {
  iarray[i] = 20 * (i + 1);
  cout << iarray[i++] << "\n";
}
...