求教一下循环更新变量的问题,书上的答案和我学的概念有冲突
书上有道例题是求 (1-1/2 +1/3 -1/4 .......-1/100)的值。
下方附上我自己写的解法和书上的解法。两者输出结果一样,附上它只是为了表示我经过自己的思考和行动,并不是遇到不懂就来发帖找大神什么的。
我自己做了次,用的是for循环(现在只学了这个),然后再看答案,答案是用while解的,能看懂答案的意思。
但是在分母循环递增这块他用的是浮点型,我看郝斌老师的视频很明确的讲过,循环更新的变量不能定义为浮点型。
而书上的解法是定义了double,这点我很不明白。
这两者谁错了呢。
自己解题如下:
# include <stdio.h>
int main(void)
{
int i;
int sign = 1;
float sum = 1;
for (i = 2; i < 101; ++i)
{
sign = -1 * sign;
sum = sum + sign * 1.0/i;
}
printf("sum = %f.\n", sum);
return 0;
}
/*在VC++6.0中输出的结果是
sum = 0.688172.
*/
书上的例题解法为:
# include <stdio.h>
int main(void)
{
int sign = 1;
double deno = 2.0,sum = 1.0, term;
while (deno <= 100)
{
sign = - sign;
term = sign / deno;
sum = sum + term;
deno = deno + 1; //此处的deno为浮点型
}
printf("%f\n", sum);
}
/*在VC++6.0中输出的结果是
sum = 0.688172.
*/