我需要使用我拥有的当前函数并使用相同的参数找到八边形的区域,每次我输入的内容只输出为" 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);
}
答案 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。