0
void harmsec(){

    int n = 1;
    float y = 1;
    printf("Harmonic sequence: ");

        while (y >= 0.11){
            printf("%.2f", y);
            printf(", ");
            n = n + 1;
            y = 1*(1/n);
        } /*while*/
        if (y < 0.11){
            printf("%.2f", y);
            printf("\n");
        }/*if*/
}/*harmonic sequence*/

我想知道我的代码有什么问题,试图输出一个谐波序列。输出只有 1.00,后面是 0.0。

4

3 回答 3

4

1/n 是整数除法,第一次 n 是 2,所以 1/2 = 0 并且 y 变为零。

将 1/n 更改为 1./n,然后它将以浮点精度计算除法。

于 2013-09-21T20:24:04.287 回答
3

y = 1*(1./n); //make the result as float

于 2013-09-21T20:23:59.613 回答
1
void harmsec(){

int n = 1;
float y = 1;
printf("Harmonic sequence: ");

    while (y >= 0.11){
        printf("%.2f", y);
        printf(", ");
        n = n + 1;
        y = 1*(((double)1)/n);
    } /*while*/
    if (y < 0.11){
        printf("%.2f", y);
        printf("\n");
    }/*if*/
}/*harmonic sequence*/
于 2013-09-21T21:06:09.980 回答