m-yb

c语言求调和数列前n项和以及遇到的经典bug

代码如下:

#include <stdio.h>
int main() {
    // author:m-yb
    // 2019-08-29
        // devc 格式化:ctrl shift A
        // 1 - 1/2 + 1/3 ... - 1/100 
        int i;
        int flag = -1;
        float result = 0;
        for (i=1; i<=100; i++) {
            flag = -flag;
            result = result + flag / i;
        }
        printf("%f", result);
        return 0;    
}

以上代码不会算出合理的值, 有个bug大家猜猜为啥?

下面是正确的代码:

#include <stdio.h>
int main() {
        // author:m-yb
        // 2019-08-29
        // devc 格式化:ctrl shift A
        // 1 - 1/2 + 1/3 ... - 1/100 
        int i;
        float flag = -1;
        float result = 0;
        for (i=1; i<=100; i++) {
            flag = -flag;
            result = result + flag / i;
        }
        printf("%f", result);
        return 0;    
}

完~

 

posted on 2019-08-30 00:46  m-yb  阅读(970)  评论(0编辑  收藏  举报

导航