题目名称:分数求和
题目内容:计算1/1-1/2+1/3-1/4+1/5-......+1/99-1/100的值,打印出结果
错误的代码如下:
#include <stdio.h> int main() { int i = 0; double sum = 0.0; int flag = 1; for (i = 1; i <= 100; i++) { sum += flag * 1/ i; flag = -flag; } printf("%lf\n", sum); //1/1+1/2+1/3...=1 //1+0+0+0...=1 return 0; }
错误结果如下图所示:
因为1/1+1/2+1/3...=1,1+0+0+0...=1,C语言中的/,两个整形相除只会保留整数部分,我们只需将sum += flag * 1/ i;改为sum += flag * 1.0/ i;即可。
改正后的代码如下所示:
#include <stdio.h> int main() { int i = 0; double sum = 0.0; int flag = 1; for (i = 1; i <= 100; i++) { sum += flag * 1.0/ i; flag = -flag; } printf("%lf\n", sum); //1/1+1/2+1/3...=1 //1+0+0+0...=1 return 0; }
正确结果如下图所示: