本文主要是介绍PTA预编译中的宏定义:求平行四边形面积,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
已知平行四边形面积函数的原型如下:
函数原型
double ParaArea(double base, double height);
说明:参数 base 和 height 分别为平行四边形的底和高,函数值为平行四边形的面积。
请在空白处填写适当内容,用带参数的宏替换命令来实现相同的功能。
裁判程序
#include <stdio.h>__________int main(){ double a, b, c;scanf("%lg%lg", &a, &b);c = ParaArea(a, b);printf("%g\n", c);return 0; }
注:裁判程序有很多,不止一个。
输入样例
2.5 1.4
输出样例
3.5
解题代码很简单:
#define ParaArea(a,b) ((a)*(b)*1.0)
不过即使这样,这道题仍有可注意之处:
它scanf和printf中用的是%lg和%g,这是啥?
%lg和%g都是C语言中的格式化输出符号,用于输出浮点数。其中,%lg可以自动选择以实数形式输出,或者是以科学计数法输出,而%g则会根据数值的大小自动选择以实数形式输出,或者是以科学计数法输出
在这道题中,%lg和%g的作用是相同的,都是用于读取输入的浮点数。具体来说,%lg可以读取任意类型的浮点数,包括float、double和long double,而%g只能读取float和double类型的浮点数
那么,为什么要加1.0呢?
这是因为在C语言中,除法运算的结果可能是整数,而我们需要将其转换为浮点数。如果我们不乘以1.0,那么结果就会被截断为整数,从而导致精度丢失。
总而言之,这道题确实一开始容易让人摸不着头脑,因为它没太说清楚我们要干什么,在此多谢好友迟暮的代码分享,也希望能帮到更多的人。
这篇关于PTA预编译中的宏定义:求平行四边形面积的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!