每个C程序员都知道C编程语言的math.h头文件。该标题定义了各种数学函数和一个宏。该库中所有可用的函数都将double作为参数, 并返回double作为结果。
该库的已知功能之一是sqrt函数, 这是非常有用的函数double sqrt(double number), 它返回数字的平方根:
#include <stdio.h>
#include <math.h>
int main () {
/// 2.000000
printf("Square root of %lf is %lf\n", 4.0, sqrt(4.0) );
/// 2.236068
printf("Square root of %lf is %lf\n", 5.0, sqrt(5.0) );
return(0);
}
很容易吧?但是, 大学的老师不喜欢让学生容易点, 这就是为什么在编程课上你可能需要找到一种方法来找到数字的平方根而不使用C中的该库!
由于作业或任务不是可选的, 因此我们将向你展示如何在不使用C语言的sqrt函数的情况下轻松实现这一目标。
实现
首先, 我们将直接为你提供解决方案, 并在文章结尾进行说明:
#include<stdio.h>
void main()
{
int number;
float temp, sqrt;
printf("Provide the number: \n");
scanf("%d", &number);
// store the half of the given number e.g from 256 => 128
sqrt = number / 2;
temp = 0;
// Iterate until sqrt is different of temp, that is updated on the loop
while(sqrt != temp){
// initially 0, is updated with the initial value of 128
// (on second iteration = 65)
// and so on
temp = sqrt;
// Then, replace values (256 / 128 + 128 ) / 2 = 65
// (on second iteration 34.46923076923077)
// and so on
sqrt = ( number/temp + temp) / 2;
}
printf("The square root of '%d' is '%f'", number, sqrt);
}
代码如下所示:最初, 程序将提示用户输入我们要从中查找平方根的数字。我们将数字的一半存储在一个变量中, 将其除以2, 即sqrt。然后, 我们将声明一个temp变量, 该变量将存储sqrt先前值即temp的副本。最后, 我们将循环直到sqrt变量与temp不同为止, 在内部, 我们将使用先前的sqrt值更新temp的值, 依此类推。 sqrt值通过代码中描述的操作更新, 仅此而已。循环结束后, 你将可以打印数字的平方根。
编码愉快!
评论前必须登录!
注册