求一种算法,较精确地算出√10的近似值
2个回答
展开全部
/*
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;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询