将平方数相加的 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)。
要解决此问题,
- 在第一个循环中删除
=
。
- 在第一个循环后将
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
的总和。
所以我想创建一个包含所有平方数的数组,最大为 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)。
要解决此问题,
- 在第一个循环中删除
=
。 - 在第一个循环后将
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
的总和。