详细解析C语言中的开方实现
2019/7/10 23:06:38
本文主要是介绍详细解析C语言中的开方实现,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
关于C语言中的开方计算,首先想到的当然是sqrt()函数,让我们先来回顾一下它的基本用法:
头文件:#include <math.h>
sqrt() 用来求给定值的平方根,其原型为:
double sqrt(double x);
参数
x 为要计算平方根的值。
如果 x < 0,将会导致 domain error 错误,并把全局变量 errno 的值为设置为 EDOM。
返回值
返回 x 平方根。
注意,使用 GCC 编译时请加入-lm。
实例计算200 的平方根值。
#include <math.h> main(){ double root; root = sqrt(200); printf("answer is %f\n", root); }
输出结果:
answer is 14.142136
题目
求整数N的开方,精度在0.001
二分法
若N大于1,则从[1, N]开始,low = 1, high = N, mid = low + (high - low) >> 1开始进行数值逼近
若N小于1,则从[N, 1]开始,low = 0, high = N, mid = low + (high - low) >> 1开始进行数值逼近
ac代码
/** * 创新工厂2014年校招算法题目,求整数N的开方,精度为0.001 */ #include <stdio.h> #include <stdlib.h> #include <math.h> #define ACCURACY 0.001 double newSqrt(double n) { double low, high, mid, tmp; // 获取上下界 if (n > 1) { low = 1; high = n; } else { low = n; high = 1; } // 二分法求开方 while (low <= high) { mid = (low + high) / 2.000; tmp = mid * mid; if (tmp - n <= ACCURACY && tmp -n >= ACCURACY * -1) { return mid; } else if (tmp > n) { high = mid; } else { low = mid; } } return -1.000; } int main(void) { double n, res; while (scanf("%lf", &n) != EOF) { res = newSqrt(n); printf("%lf\n", res); } return 0; }
这篇关于详细解析C语言中的开方实现的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-07-06有没有什么开源的py项目可以对图像进行分类-icode9专业技术文章分享
- 2024-07-05feign默认connecttimeout和readtimeout是多少-icode9专业技术文章分享
- 2024-07-05idea控制台,日志太多,导致部分想看得日志被刷走 搜不到-icode9专业技术文章分享
- 2024-07-05The server selected protocol version Tls10 is not accepted by client preferences [TLs12]-icode9专业技术文章分享
- 2024-07-05怎么清理项目缓存-icode9专业技术文章分享
- 2024-07-04安装 Eyoucms详细图文教程-icode9专业技术文章分享
- 2024-07-04ueditor 复制文章时,图片的链接是一个下载图片地址,该如何处理?-icode9专业技术文章分享
- 2024-07-04怎样判断host有没有对wordpress有缓存呢-icode9专业技术文章分享
- 2024-07-04具有编译功能的系统make后,无法ssh连接-icode9专业技术文章分享
- 2024-07-04make后如何升级ssh-icode9专业技术文章分享