想要求出当1/1+1/2+1/3+...+1/i=15.0时,是第几项?但是程序不对,求解

#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吧,只能用大于等于