我无法指定为什么输出不正确?

I can't specify why the output is not right?

本文关键字:输出 不正确 为什么      更新时间:2023-10-16

我想要一个程序来计算下列数学中第一个给出正值的自然数。函数。F (x) = 0.001 - (1/x)

#include<iostream>
using namespace std;

long double abso (long double x)
{
    return (x > 0 ? x : -x);
};
int main()
{
    long double y=0,x=0;
    for (register long double n=0; y<=0 ;)
    {
        n++;
        y = 0.001 - (1/x);
        x=n;
    };
    cout<< "The number is "<< x <<'n';
    system ("pause");
}

它应该给1001,但它给了我1002。

谁能告诉我代码中的错误?

循环for (register long double n=0; y<=0 ;)将中断一次y > 0

最后一次赋值是:

   n++;
   y = 0.001 - (1/x);
   x=n;

所以验证方程的x等于n-1,而不是n,因此输出不正确。

你可以用一个while循环来编写更简单的东西,而不需要额外的n(除了register修饰符,但如果你真的需要它——我怀疑它——把它放在x上):

while ( y<=0 )
{
    y = 0.001 - (1/++x);
}
cout<< "The number is "<< x <<'n';

先赋值x再除以1。1不能除以0。1除以0实际上是一个错误。

for (register long double n=0; y<=0 ;)
    {
        n++;
        x=n;
        y = 0.001 - (1/x);
    };

我希望这对你有帮助