题目描述
已知梯形的上底、下底和高,计算梯形的面积。
输入
梯形的上底、下底和高。
输出
梯形的面积。
样例输入
5 8 10
样例输出
65.000000
题目分析:
① 根据题意需要定义存放梯形上底、下底、高和面积的实型变量为:float supline,dowline,high;
输入:scanf("%f",&supline);
scanf("%f",&dowline);
scanf("%f",&high);
② 求梯形面积的公式为:面积=(上底+下底)×高/2,即area = ((supline+dowline)*high)/2.0;
为什么要除以2.0,除以2.0和除以2有什么区别?
这里涉及到自动类型转换,举个栗子:
运行以下代码
输出结果:
当a和b都是整数类型时(1和2),相除结果向下取整,本来应该是0.5,但是要向下取整,所以结果就变成了0。
当a/b中,a和b其中有一个数是浮点数时,比如b是浮点数,C语法就会对a进行默认类型转换,让a也变成浮点数,可以理解为即1/2.0变成1.0/2.0,则能正常计算出结果。
③ 为使程序具有通用性,可先从键盘输入上底、下底和高的值,然后再计算面积;
④ 输出计算结果输出语句:printf("%f\n",area);
代码实现:
#include<stdio.h>
int main()
{
float supline,dowline,high,area;
scanf("%f",&supline);
scanf("%f",&dowline);
scanf("%f",&high);
//或者scanf("%f %f %f",&supline,&dowline,&high);
area = ((supline+dowline)*high)/2.0;
printf("%f\n",area);
return 0;
}
运行结果:
欢迎批评指正。