C for / while循环不求和

时间:2012-05-22 01:41:51

标签: c for-loop while-loop sum

for (i = 0; i < n; i++)
    {
        x[i] = (float) (i * step);
        k = 5;
        sum = 0;
        while(k > 0)
        {
            sum = sum + (1/k) * sin((k*PI*x[i])/5);
            k = k - 2;
        }
        y1[i] = (4/PI)*sum;

        y2[i] = 0*(4/PI)*sin((PI*x[i])/5);
    }

当调试除1之外的每个k值时,总和显示为等于0,我是否正确实现了循环?

编辑1:

int k;
double sum;

2 个答案:

答案 0 :(得分:7)

由于1和k都是整数 - 1 / k是 integer division ,如果k> 1,它总是为0因此,总和不会增加任何东西。您希望1 / k执行浮点除法。请尝试1.0 / k而不是1 / k。

答案 1 :(得分:0)

1 / k会给0.因为它是整数分区。 你必须给1.0 / k或1 /(浮动)k