平方数加在一起的C程序-不起作用

时间:2018-11-01 18:59:32

标签: sum ansi-c

因此,我想创建一个数组,其中所有平方数最多为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 :(得分:1)

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

在第一个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*999i

因此您可以更改

squareNumbers[i] = i*i;

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

因此它具有从1*11000*1000的总和。