运行结果不正确,不知道为什么,希望能够得到指教。
#include <iostream>
#include <math.h>
using namespace std;
int main(){
double a,x,y;
cin>>a;
do{
x = a;
y = (2/3)*x+a/(3*x*x);
x=y;
}
while(fabs(a-x) < 0.00001);
cout<<x<<endl;
}
运行结果不正确,不知道为什么,希望能够得到指教。
#include <iostream>
#include <math.h>
using namespace std;
int main(){
double a,x,y;
cin>>a;
do{
x = a;
y = (2/3)*x+a/(3*x*x);
x=y;
}
while(fabs(a-x) < 0.00001);
cout<<x<<endl;
}
x = a;
y = (2/3)*x+a/(3*x*x);
x=y;
问题:
1>.如果程序进行迭代,a
的值是不改变的,会导致x
的值一直为输入的值。应该写成x = ((2.0) / 3)*x + a / (3 * x*x); //将 x=a 放在do语句之前
2>.(2/3)
的值为0.如果想计算浮点数的话,应该写为(2.0/3)
上面两个是程序错误。
while(fabs(a-x) < 0.00001);
问题:
3>.while语句的判断条件第一次迭代以后返回的bool值即为0,此时跳出循环。
回答的要是有哪儿不对的,谢谢指出
3 回答1.3k 阅读✓ 已解决
1 回答1.1k 阅读✓ 已解决
4 回答863 阅读
1 回答934 阅读
1 回答968 阅读
1 回答733 阅读
1 回答836 阅读
更新:这你也注意一下边界条件吧, 如果我的值为0,需要单独处理一下