我想要一个程序来计算从下面的数学中给出正值的第一个自然数。功能。 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。
有人可以将我引用给代码中的错误吗?
答案 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';