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

posted @ 2020-02-11 20:29  七只蚂蚁  阅读(633)  评论(0)    收藏  举报