首页 > 解决方案 > 计算平方根的自定义程序未显示任何输出

问题描述

这是一个用户定义的程序,用于打印数字的平方根。它应该也适用于不是完美正方形的数字。每次i增加一步,如果等于 ,则检查的值。如果相等,则打印的值。0.01i*ini

#include <stdio.h>

void squareRoot(double);

int main()
{
    double num;
    scanf("%lf", &num);
    squareRoot(num);
    return 0;
}

void squareRoot(double n)
{
    double i;
    for (i = 0; i < n; i += 0.01)
    {
        //printf("%.2lf\n",i*i);
        if (i * i == n)
        {
            printf("%lf\n", i);
            break;
        }
    }
}

标签: cruntime-errorlogicsquare-root

解决方案


由于评论中解释的原因,您使用的方法充其量是非常不准确的,有几种计算平方根的方法,对于这个示例,我将使用巴比伦方法,其简化形式很容易使用简单的算术运算:

运行示例

#include <stdio.h>

double squareRoot(double);

int main() {

    double num;

    printf("Enter number: \n");
    scanf("%lf", &num);

    if(num < 0) {
        puts("Negative values not allowed");
        return 1;
    }

    printf("Square root of %.2lf is %lf", num, squareRoot(num));
}

double squareRoot(double num) {

    double sqroot = num / 2, temp = 0;

    while (sqroot != temp) {
        temp = sqroot;
        sqroot = (num / temp + temp) / 2;
    }
    return sqroot;
}

推荐阅读