【发布时间】:2017-04-30 02:13:50
【问题描述】:
问题是我必须提示用户输入三角形的底边和高度作为浮点数,传递给它一个函数,该函数将获取三角形的面积,将其返回给 main。问题是该区域的输出为 0.000000。
它也给了我一个警告
Severity Code Description Project File Line Suppression State
Warning C4477 'printf' : format string '%f' requires an argument of type 'double', but variadic argument 1 has type 'float (__cdecl *)(float,float)' line 38.
我做错了什么?
#include <stdio.h>
#include <stdlib.h>
float area(float base,float height);
int main()
{
float height;
printf("Enter an height: ");
scanf_s("%f", &height);
printf("Number = %f", height);
float base;
printf("Enter an base: ");
scanf_s("%f", &base);
printf("Number = %f", base);
area(height, base);
printf("area of triangle : %f\n", area);
return 0;
}
float area(float base, float height)
{
float half = .5;
float area = half * base * height;
return area;
}
【问题讨论】:
-
area(height, base); printf("area of triangle : %f\n", area);-->printf("area of triangle : %f\n", area(base, height)); -
area是一个函数。您使用area(height, base)调用它一次,但您从未将结果分配给变量。然后,当您尝试将area传递给printf时,您传递的是一个函数,而不是该函数的结果。 -
另外:绝对没有理由拥有
half和area临时变量。是的,.5之类的幻数不好,但将其提取到名为half的变量中不会添加任何额外信息。 -
我只需要在记录中说:“在知道如何调用函数之前可以both
printf()和scanf()的任何人都可能隐藏了一些某处的辉煌......