sqrt()函数原理,并尝试编程实现(暂时要求整数类型)(有问题待解决)
#include "stdio.h" int sqrt(int question); void main(void) { int question=49,answer; answer=sqrt(question); if(question<0) { printf("Error:sqrt returns %d\n,answer"); } else { printf("Thw square root of %d is %d\n",question,answer); } } int sqrt(int question) { int temp=question/2;//大于一个数的一半不可能是该数的平方根,一可以换为更科学的数字歌 while(1) { if(temp*temp==question) { return temp; } else { temp-=1; } } }
上述程序如果question的值不能开平方,那程序就会陷入死循环永远得不到结果。所以改进程序如下
#include "stdio.h" int sqrt(int question); void main(void) { int question=4,answer; answer=sqrt(question); if(answer<0) { printf("Error:sqrt returns %d\n",answer); } else { printf("Thw square root of %d is %d\n",question,answer); } } int sqrt(int question) { int temp=question/2;//一个数的一半不可能是该数的平方根,一可以换为更科学的数字歌 while(temp--) { if(temp*temp==question) { return temp; } return -1; } }
改进后的程序出现问题,无论question是几,answer都小于0

浙公网安备 33010602011771号