本文介绍: PTA预编译中的宏定义:求平行四边形面积

已知平行四边形面积函数原型如下

函数原型
double ParaArea(double base, double height);

说明参数 baseheight 分别为平行四边形的底和高,函数值为平行四边形的面积。

请在空白填写适当内容,用带参数的宏替换命令实现相同功能

裁判程序
#include <stdio.h>

__________

int main()

{ double a, b, c;

scanf("%lg%lg", &a, &b);

c = ParaArea(a, b);

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

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

原文地址:https://blog.csdn.net/etamaos/article/details/134759019

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_37932.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注