q8111 2019-10-23 10:00 采纳率: 0%
浏览 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;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?