C中的谐波序列

时间:2013-09-21 20:21:30

标签: c math

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。

3 个答案:

答案 0 :(得分:4)

1 / n以整数除法完成,n为2第一次,因此1/2 = 0且y变为零。

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

答案 1 :(得分:3)

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

答案 2 :(得分: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*/