无法在C中运行总计

时间:2010-09-29 18:05:19

标签: c

我是编程的新手,也是这个网站的新手,所以你好...... 我试图获得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;
}

6 个答案:

答案 0 :(得分:9)

您需要将sum初始化为0。

编辑正如其他人在事后声明的那样,你看到垃圾的原因是因为sum没有初始化并且包含内存中的内容。它可以是任何内容,而您对sum = square + sum的使用会增加未初始化值的平方。

答案 1 :(得分:1)

您永远不会初始化sum的值。

您的代码第一次运行

sum = square + sum;

sum(右侧)的值是任意数字,因为它尚未初始化。因此,sum(左侧)的结果值是任意数加square

只需添加sum = 0语句就像countsquare一样。

答案 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)

使用sum初始化0,否则它包含任意数据:

sum = 0;

请参阅:http://codepad.org/e8pziVHm

答案 4 :(得分:0)

总和未初始化

答案 5 :(得分:0)

你应该这样做:

sum=0;

并删除

square=0;