q8111 2019-10-23 10:00 采纳率: 66.7%
浏览 198
已采纳

计算sqrt6的近似值,运行结果sqrt6=2.5,不符合精度要求,哪里出问题了?

#include
#include
int main()
{
int n,z=2;
n=6;
double x[123];
x[1]=n/2.0;
do
{
x[z]=(x[z-1]+n/x[z-1])/2;
printf("sqrt6=%lf",x[z]);
}
while(fabs(x[z]-x[z-1])<1e-5);
return 0;
}


  • 写回答

1条回答 默认 最新

  • 豆丷 2019-10-23 15:45
    关注

    1.z从头到尾没有变,应该再循环里让z自增来增加精度,
    2.while条件错误,当精度满足要求是,跳出,不满足要求是继续循环,你大于小于弄反了

    int main()
    {
        int n, z = 1;
        n = 6;
        double x[123];
        x[1] = n / 2.0;
        do
        {
            ++z;
            x[z] = (x[z - 1] + n / x[z - 1]) / 2;
            printf("sqrt6=%lf\n", x[z]);
        } while (fabs(x[z] - x[z - 1])>1e-5);
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥30 win from 窗口最大最小化,控件放大缩小,闪烁问题
  • ¥20 易康econgnition精度验证
  • ¥15 msix packaging tool打包问题
  • ¥28 微信小程序开发页面布局没问题,真机调试的时候页面布局就乱了
  • ¥15 python的qt5界面
  • ¥15 无线电能传输系统MATLAB仿真问题
  • ¥50 如何用脚本实现输入法的热键设置
  • ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
  • ¥30 深度学习,前后端连接
  • ¥15 孟德尔随机化结果不一致