将平方数相加的 C 程序 - 不起作用

C Program that adds together square numbers - doesnt work

所以我想创建一个包含所有平方数的数组,最大为 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 不起作用。

首先,您的代码引用了超出数组范围的索引。

在第一个 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*0999*999 的总和遵循 i.

的范围

所以你可以从

squareNumbers[i] = i*i;

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

所以它有从 1*11000*1000 的总和。