#include
int main()
{
int i=1;
double s=0.0;
while(s!=15.0)
{
s+=1.0/i;
i++;
}
if(s=15.0)
printf("%f",i);
return 0;
}
#include
int main()
{
int i=1;
double s=0.0;
while(i)
{
if((s + (double)1.0/i ) > 15){break;}
s+=(double)1.0/i;
i++;
}
printf("%f",i);
return 0;
}
最后的if里面是判断等于,不是赋值。
还有这样并算不出来i的值,因为浮点数会损失精度,不会刚好相加到15。
首先你要确定会有精确为15的时候吗?
如果没有 那个这是个死循环,有很大问题。double判断没有用相等的,一般是在某个范围吧
其次如楼上说的if的条件写法不对 应该是if(s==15.0)
刚进去while判断s并不等于15.0
因此 while循环体并没有执行
#include
int main()
{
int i=1;
double s=0.0;
while(true)
{
s+=1/(i*1.0); //应该先求和在i++
if(fabs(s) > 15.0){break;} //使用绝对值判断
i++;
}
printf("%d",i);
return 0;
}
不能是等于15吧,只能用大于等于