C Программа, которая складывает квадратные числа - не работает - PullRequest
0 голосов
/ 01 ноября 2018

Итак, я хочу создать массив со всеми квадратными числами до 1000000. И затем я сложу числа вместе. Вот мой код.

#include <stdio.h>

int main(void){

    int squareNumbers[1000];
    int i = 0;
    int sum = 0;

    while (i <= 1000){
        squareNumbers[i] = i*i;
        i++;
    }

    while (i >= 0) {
        sum= sum + squareNumbers[i];
        i--;
     }

printf("Sum: %d", sum);

Моя проблема в том, что я могу выполнить программу, однако printf в конце концов не работает.

1 Ответ

0 голосов
/ 11 декабря 2018

Прежде всего, ваш код ссылается на индекс, выходящий за пределы диапазона массива.

В первом цикле while i увеличивается до 1001 и ссылается на squareNumbers[1000], что превышает максимально допустимый индекс (999).

Чтобы это исправить,

  1. удалить = в первом цикле.
  2. уменьшить i на 1 после первого цикла.

код:

int squareNumbers[1000];
int i = 0;
int sum = 0;

while (i < 1000){
    squareNumbers[i] = i*i;
    i++;
}

i--;
while (i >= 0) {
    sum= sum + squareNumbers[i];
    i--;
 }

printf("Sum: %d", sum);

Однако это будет сумма от 0*0 до 999*999 в диапазоне i.

Так что вы можете изменить с

squareNumbers[i] = i*i;

до

squareNumbers[i] = (i+1)*(i+1);

Таким образом, он имеет сумму от 1*1 до 1000*1000.

...