本题为14年蓝桥杯校内选拔赛第2题,原题如下:
1/1 + 1/2 + 1/3 + 1/4 + ... 在数学上称为调和级数。
它是发散的,也就是说,只要加上足够多的项,就可以得到任意大的数字。
但是,它发散的很慢:
前1项和达到 1.0
前4项和才超过 2.0
前83项的和才超过 5.0
那么,请你计算一下,要加多少项,才能使得和达到或超过 15.0 呢?
请填写这个整数。
注意:只需要填写一个整数,不要填写任何多余的内容。比如说明文字。
本题的关键在于如何控制循环变量,如果用int类型,有可能超出其表示范围,因此,可以采取long类型,如果该类型不够,采用float或double类型,参考代码如下:
#include <stdio.h>
int main()
{
long i=0;
double sum=0.0;
while(sum<15.0)
{
i=i+1.0;
sum+=1./i;
}
printf("%d\n",i);
return 0;
}
这个题对于数的精度有较高的要求,如果将sum的和定义为float类型,得到的答案和double得到的答案是不同的,这点需要大家在编程的时间注意一下。