求一种算法,较精确地算出√10的近似值

 我来答
秦殇174
2014-07-21 · TA获得超过423个赞
知道小有建树答主
回答量:377
采纳率:0%
帮助的人:278万
展开全部
/*
2014-04-28 2 夜间(失败)
2014-04-29 3 0518 

输入一个数字求其平方根

算法分析:
------------------------


算法:
1) 对数字a,任取近似根sqrt_1
2) 另一近似根sqrt_2 = a/sqrt_1
3) sqrt_1等于sqrt_1 sqrt_2平均值
3) sqrt_2 = a/sqrt_1

………………

n) 若干次循环后,如果sqrt_1=sqrt_2,则sqrt_1,sqrt_2均为a的精确根,如果sqrt_2不等于sqrt_1,则sqrt_1更精确

n+1)输出sqrt_1



算法思想:
任取一个数sqrt_1为a的近似根,若sqrt_1大于a,则sqrt_2小于a,反之则反
则sqrt_1等于sqrt_1sqrt_2的平均值,较大根与较小根平均值必然更加接近根的真实值
若干次循环
输出sqrt_1


------------------------



------------------------

*/


# include "stdio.h"
# include "math.h"

int main(void)
{
int n, i;
double a, sqrt_1, sqrt_2;

q: printf("请输入一个数字:");
scanf("%lf", &a);
printf("请输入精度:");
scanf("%d", &n);

for (sqrt_1 = 1, i = 1; i <= n; i++)//循环精度次
{
sqrt_2 = a / sqrt_1;
sqrt_1 = (sqrt_1 + sqrt_2) / 2;//算法核心部分

if (sqrt_1 == sqrt_2)
{
printf("这个数精确根为:%lf\n", sqrt_1);
break;
}

}

if (sqrt_1 != sqrt_2)
printf("这个数近似根为:%lf\n", sqrt_1);//sqrt_1比sqrt_2更精确

printf("对照值:%lf\n", sqrt(a));

goto q;//再次开始

return 0;
}


Chen·Augustine
2014-07-21
知道答主
回答量:14
采纳率:0%
帮助的人:4万
展开全部
……计算机
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式