#include
using namespace std;
int main()
{
float lenth,s=0.00;
int n,i;
cin>>lenth;
cout<
{
s=s+1/(float)(i);
if(s>=lenth)
break;
}
n=i-1;
cout<
return 0;
}
解释:将for循环里面的第一条语句做如此修改 s=s+1/(float)(i);,由于i是int型,运算1/i结果也是int型,而i是大于2的,1/i的结果始终是0,加到s=0上还是零,除非你输入负数,否则不可能得到n的值,经过强制类型转换i由int型转换为float型,1/i也为float型,故可得运算结果。
另:此循环有个极限值,length的值不宜过大(貌似10与20之间,记不清了)。
没有编译器啊郁闷。我想问题出现在for那边:出现死循环了。因为你输入的length肯定是大于1的浮点数字,才导致出不来结果,你把lenth的值写小点就可以了比如0.51啊
把1改成1.0就好了,不然默认转化为int型,1/i得到的结果只能是0,然后循环就卡住了!