永发信息网

C++编程问题,求一个实数的平方根。

答案:3  悬赏:20  手机版
解决时间 2021-02-09 22:09
输入实数x(x>0),求x的正平方根,结果保留五位小数。要求不用sqrt实现。
提示:设a为x的正平方根,程序的目标是求a的值,使得a*a=x。a的取值范围在[0, x]内。由于a2在a>0时是单调递增函数,所以可以重复以下步骤缩小a的取值范围:(假设x = 2)
(1) a = (0 + 2) / 2=1,因为a*a = 1*1 <= x,所以a的取值范围在[1, 2]内。
(2) a = (1 + 2) / 2 = 1.5,因为a * a = 1.5 * 1.5 > x,所以a的取值范围在[1, 1.5]内。
(3) a = (1+1.5)/2=1.25,因为a*a=1.25*1.25 <= x,所以a的取值范围在[1.25, 1.5]内
(4) ……
重复上述步骤,a的取值范围在不停缩小,当取值范围的上限减去下限等于0.00001时,可停止求解,此时a的值即为x的平方根。
最佳答案
double x; //输入值
double a; //结果
double l; //下限
double h; //上限
double t; //差值
printf("请输入X值:\n");
scanf("%lf",&x);

l = 0;
h = x;
do
{
a = (l+h)/2;
if (a*a <= x)
{
l = a;
}
else
{
h = a;
}
t = h-l;
}while(t>0.00001);

printf("结果:%f\n",a);
全部回答
#include <stdio.h> #include <math.h> double Root(double da) { double a = 0,b = da,root; root = (a + da)/2; while(fabs(root * root - da) > 1.0E-6) { if(root * root < da) a = root; else b = root; root = (a + b)/2; } return root; } int main() { double a; while(scanf("%lf",&a) == 1) printf("%lf = %.5lf\n",a,Root(a)); return 0; }
刚刚运行过,成功!(我也是个初学者,如果有一个错误是与预处理头文件有关的,可以点击project,选择c/c++,将debug改为预处理头文件,选择第一项即可。)没错的话,可以不用管。 #include #include void main() {float sum,x,y,z; cout<<"请输入第一个数的值:x="; cin>>x; cout<<"请输入第一个数的值:y="; cin>>y; cout<<"请输入第一个数的值:z="; cin>>z; sum=sqrt(x)+sqrt(y)+sqrt(z); cout<<"求和结果:sum="<}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
艺剪坊专业美发地址在哪,我要去那里办事
【233333333】0.333333333.是有限小数还是无
鸿顺园西门在哪里啊,我有事要去这个地方
丝秀阁烫染连锁地址在什么地方,我要处理点事
鸿运干洗(岳阳市汨罗市屈原管理区)地址在哪,
荷包蛋和茶叶蛋哪个营养好
中国移动手机专卖店新鸿翔通讯店这个地址在什
watermelon西瓜这个英语单词怎么记?
男性下腹左侧手一按就胀痛是什么原因?
靓典专业烫染机构怎么去啊,我要去那办事
国际随机行李托运
老董平价怎么去啊,有知道地址的么
6岁狼狗相当于人类的几岁?
古代的蔻丹怎么做的?
恋爱ol怎么交男友
推荐资讯
杭州天虹购物中心里面的东西怎么样?
3公里跑步25分钟,处于什么水平?
华业玫瑰郡游泳池地址在什么地方,我要处理点
有建设银行卡不是固定每个月打钱到卡上,可以
深圳社康中心营业时间是什么时候?自己可以选
唐口中心小学4级2班期中考试得分单
华西宾馆这个地址在什么地方,我要处理点事
豆豆画室怎么去啊,我要去那办事
招去掉提手旁加偏旁组成新字
据巴基斯坦电视台报道,当地时间2008年11月14
女性之家美容养生会所(二店)地址在什么地方,
高师傅开锁公司(松岚街18号乾豪·格林小
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?