1
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;
4

2 回答 2

7

由于 1 和 k 都是整数 - 1/k 是整数除法,因此如果 k > 1,它总是为 0。因此,总和不会添加任何内容。您希望 1/k 执行浮点除法。尝试1.0 / k代替 1/k。

于 2012-05-22T01:44:19.560 回答
0

1/k 将给出 0。因为它是整数除法。你必须给 1.0/k 或 1/(float)k

于 2012-05-22T01:46:02.057 回答