c++ 迭代法求根号
我的程序是这样的:#include<cstdlib>#include<iostream>#include<cmath>usingnamespacestd;intmain(...
我的程序是这样的:
#include <cstdlib>
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
double a,x,y;
cout<<"a=";
cin>>a;
while(fabs(x-y)<=1e-5)
{y=x;
x=(1.0/2)*(x+a/x);
}
cout<<"x^0.5="<<x<<endl;
}
不知道错哪里,有高手知道不,跪求指导 展开
#include <cstdlib>
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
double a,x,y;
cout<<"a=";
cin>>a;
while(fabs(x-y)<=1e-5)
{y=x;
x=(1.0/2)*(x+a/x);
}
cout<<"x^0.5="<<x<<endl;
}
不知道错哪里,有高手知道不,跪求指导 展开
2个回答
展开全部
第一个,你写的int main()最后要求返回一个int
第二个,x没有赋初值,应该是x=a/2;y其实也应该赋初值,比如0
第三个,进入循环的条件应该是while(fabs(x-y)>1e-5),原程序正好反了,根本没有进入迭代过程
第四个,没有判断输入非负
#include <cstdlib>
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
double a,x,y;
cout<<"a=";
cin>>a;
if(x<0)
{
cout<<"输入不能为负数"<<endl;
return -1;
}
x=a/2;
y=0;
while(fabs(x-y)>1e-5)
{
y=x;
x=(1.0/2)*(x+a/x);
}
cout<<"x^0.5="<<x<<endl;
return 0;
}
展开全部
应该是这样写的
首先while中条件错了
而且没有给X,y初值
#include <cstdlib>
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
double a,x,y;
cout<<"a=";
cin>>a;
x=a/2;
y=(1.0/2)*(x+a/x);
while(fabs(x-y)>1e-5)
{
x=y;
y=(1.0/2)*(x+a/x);
}
cout<<"x^0.5="<<x<<endl;
return 0;
}
首先while中条件错了
而且没有给X,y初值
#include <cstdlib>
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
double a,x,y;
cout<<"a=";
cin>>a;
x=a/2;
y=(1.0/2)*(x+a/x);
while(fabs(x-y)>1e-5)
{
x=y;
y=(1.0/2)*(x+a/x);
}
cout<<"x^0.5="<<x<<endl;
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |