“多一少一”问题占程序员常犯错误的10%以上!
避免“多一少一”问题的方法之一是将比如<10甚至<5的数代入程序片断,掰手指头心算验证一下程序到底应该写为
x、x-1、x+1中的哪个?
<、<=、==、>、>=中的哪个?
修改处见注释,供参考:
#include <stdio.h>
int main(void)
{
int n, i;
float s = 0, k = 0; //i,s=1,k=1;
scanf("%d", &n);
for (i = 1; i <= n; i++) { //for(i=1.0;i<=n;i=i+1.0)
k += i; //k = 1.0 + k + i;
s += 1.0 / k;
}
printf("%.6f", s);
return 0;
}