我不能说明为什么输出不正确?

时间:2014-06-06 01:10:25

标签: c++ visual-studio-2012

我想要一个程序来计算从下面的数学中给出正值的第一个自然数。功能。 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。

有人可以将我引用给代码中的错误吗?

2 个答案:

答案 0 :(得分:0)

在将x除以之前先分配x。你不能将1除以0. 1除以0实际上是一个错误。

for (register long double n=0; y<=0 ;)
    {
        n++;

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

我希望它会有所帮助

答案 1 :(得分:0)

循环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';