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,那么结果就会被截断为整数,从而导致精度丢失。

总而言之,这道题确实一开始容易让人摸不着头脑,因为它没太说清楚我们要干什么,在此多谢好友迟暮的代码分享,也希望能帮到更多的人。

  • 15
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Louis Maos

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值