C程序找到八角形区域?

时间:2017-11-08 18:09:12

标签: c

我需要使用我拥有的当前函数并使用相同的参数找到八边形的区域,每次我输入的内容只输出为" 0.000000,"我该如何解决?这也不是错误检查。

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int die(const char * msg);
double areaFromSide(double length);



int main()
{
    double length = 0;

    printf("Enter length of one side of the octagon: ");
    scanf("%f", &length);

    if (length > 0 && length <= 100)
    {
        double area = areaFromSide(length);
        printf("Area of the octagon is: %f\n", area);
    }
    else
    {
        die("Input Failure!");
    }

    return 0;
}


double areaFromSide(double length)
{
    double area = 0;

    area = 2 * (1 + (sqrt(2)))*pow(length, 2);

    return area;
}

int die(const char * msg)
{
    printf("Fatal error: %s\n", msg);
    exit(EXIT_FAILURE);
}

1 个答案:

答案 0 :(得分:1)

由于0.000000来电错误,您始终会获得scanf()的输出;要阅读双精度数,您需要使用%lf而非%f(有关详情,请参阅this question)。

此外,在printf()中,您要打印区域的值,而不是其地址(通过使用&为变量添加前缀来检索) - 只需使用

printf("Area of the octagon is: %f", area);

此外,关于错误捕获,您有(length > 0 || length <= 100)作为谓词。这将允许任何非负值,因为||只需要一方评估为真。你想用

(length > 0 && length <= 100)

确保的长度大于0且小于100。