**
1/1 + 1/2 + 1/3 + 1/4 + ... 在数学上称为调和级数。
**它是发散的,也就是说,只要加上足够多的项,就可以得到任意大的数字。
但是,它发散的很慢:
前1项和达到 1.0
前4项和才超过 2.0
前83项的和才超过 5.0
那么,请你计算一下,要加多少项,才能使得和达到或超过 15.0 呢?**
请填写这个整数。
注意:只需要填写一个整数,不要填写任何多余的内容。比如说明文字。**
#include<stdio.h>
int main()
{
double s=0;long i;
for(i=1;s<15.0;i++)
s+=1.0/i;
printf("%ld",i);
return 0;
}
正确结果是1835421 可我这个代码结果是1835422
退出循环时多加了一次,修改:
#include<stdio.h>
int main()
{
double s=0;long i;
for(i=1; ;i++)
{
s+=1.0/i;
if(s>15.0) break;
}
printf("%ld",i);
return 0;
}
for(i=1;s<15.0;i++)
s+=1.0/i;
->
i=1;
do {
s+=1.0/(double)i++;
} while (s < 15.0);
for循环是先执行循环体,然后i++,然后再判断条件是否满足。
for(语句1;语句2;语句3)
循环体;
相当于下面这个while
语句1;
while(语句2)
{
循环体;
语句3;
}