因此,我想创建一个数组,其中所有平方数最多为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无效。
答案 0 :(得分:1)
首先,您的代码引用的索引超出了数组的范围。
在第一个while
循环中,i
增加到1001
,并引用squareNumbers[1000]
,该索引超出了它可以拥有的最大索引(999)。
要解决此问题,
=
。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
的总和。