我是编程的新手,也是这个网站的新手,所以你好...... 我试图获得10到10之间整数的运行总数,但我得到了胡言乱语的答案,我只是无法理解为什么。 为了试图找出问题所在,我添加了
printf(" running total is %d\n", sum);
排到while循环,但只是得到了更多相同的废话...... 请参阅http://codepad.org/UxEw6pFU了解结果....
我确信这有一个非常明显的解决方案......我只是太傻了看不过它! 谁知道我做错了什么?
#include <stdio.h>
int main(void) {
int count,sum,square;
int upto=10;
count = 0;
square = 0;
while (++count < upto) {
square = count * count;
printf("square of %d is %d",count,square);
sum =square + sum;
printf(" running total is %d\n", sum);
}
printf("overall total of squares of integers 1 thru 10 is %d\n", sum);
return 0;
}
答案 0 :(得分:9)
您需要将sum初始化为0。
编辑正如其他人在事后声明的那样,你看到垃圾的原因是因为sum
没有初始化并且包含内存中的内容。它可以是任何内容,而您对sum = square + sum
的使用会增加未初始化值的平方。
答案 1 :(得分:1)
您永远不会初始化sum
的值。
您的代码第一次运行
sum = square + sum;
sum
(右侧)的值是任意数字,因为它尚未初始化。因此,sum
(左侧)的结果值是任意数加square
。
只需添加sum = 0
语句就像count
和square
一样。
答案 2 :(得分:1)
马上,你不会将'sum'初始化为任何东西。
编辑:清理版本,虽然取决于编译器,但您可能需要强制执行C99模式,否则较旧的编译器可能不支持for
循环中的初始声明。
#include <stdio.h>
int main()
{
const int COUNT_MAX = 10;
int sum = 0;
for ( int i = 1; i <= COUNT_MAX; ++i )
{
sum += i*i;
}
printf("The sum of squares from 1 to 10 is: %d\n", sum);
return 0;
}
答案 3 :(得分:0)
答案 4 :(得分:0)
总和未初始化
答案 5 :(得分:0)
你应该这样做:
sum=0;
并删除
square=0;