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

2023-12-03 02:52

本文主要是介绍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预编译中的宏定义:求平行四边形面积的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/447809

相关文章

PTA求一批整数中出现最多的个位数字

作者 徐镜春 单位 浙江大学 给定一批整数,分析每个整数的每一位数字,求出现次数最多的个位数字。例如给定3个整数1234、2345、3456,其中出现最多次数的数字是3和4,均出现了3次。 输入格式: 输入在第1行中给出正整数N(≤1000),在第二行中给出N个不超过整型范围的非负整数,数字间以空格分隔。 输出格式: 在一行中按格式“M: n1 n2 ...”输出,其中M是最大次数,n

maven 编译构建可以执行的jar包

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」👈,「stormsha的知识库」👈持续学习,不断总结,共同进步,为了踏实,做好当下事儿~ 专栏导航 Python系列: Python面试题合集,剑指大厂Git系列: Git操作技巧GO

Spring 源码解读:自定义实现Bean定义的注册与解析

引言 在Spring框架中,Bean的注册与解析是整个依赖注入流程的核心步骤。通过Bean定义,Spring容器知道如何创建、配置和管理每个Bean实例。本篇文章将通过实现一个简化版的Bean定义注册与解析机制,帮助你理解Spring框架背后的设计逻辑。我们还将对比Spring中的BeanDefinition和BeanDefinitionRegistry,以全面掌握Bean注册和解析的核心原理。

Windows环境利用VS2022编译 libvpx 源码教程

libvpx libvpx 是一个开源的视频编码库,由 WebM 项目开发和维护,专门用于 VP8 和 VP9 视频编码格式的编解码处理。它支持高质量的视频压缩,广泛应用于视频会议、在线教育、视频直播服务等多种场景中。libvpx 的特点包括跨平台兼容性、硬件加速支持以及灵活的接口设计,使其可以轻松集成到各种应用程序中。 libvpx 的安装和配置过程相对简单,用户可以从官方网站下载源代码

浙大数据结构:树的定义与操作

四种遍历 #include<iostream>#include<queue>using namespace std;typedef struct treenode *BinTree;typedef BinTree position;typedef int ElementType;struct treenode{ElementType data;BinTree left;BinTre

Golang test编译使用

创建文件my_test.go package testsimport "testing"func TestMy(t *testing.T) {t.Log("TestMy")} 通常用法: $ go test -v -run TestMy my_test.go=== RUN TestMyTestMy: my_test.go:6: TestMy--- PASS: TestMy (0.

类和对象的定义和调用演示(C++)

我习惯把类的定义放在头文件中 Student.h #define _CRT_SECURE_NO_WARNINGS#include <string>using namespace std;class student{public:char m_name[25];int m_age;int m_score;char* get_name(){return m_name;}int set_name

C++/《C/C++程序编译流程》

程序的基本流程如图:   1.预处理        预处理相当于根据预处理指令组装新的C/C++程序。经过预处理,会产生一个没有宏定义,没有条件编译指令,没有特殊符号的输出文件,这个文件的含义同原本的文件无异,只是内容上有所不同。 读取C/C++源程序,对其中的伪指令(以#开头的指令)进行处理将所有的“#define”删除,并且展开所有的宏定义处理所有的条件编译指令,如:“#if”、“

c++ 定义二位数组

在 C++ 中,定义二维数组有几种常见的方式。以下是几个示例: 1. 静态二维数组 定义: int array[3][4]; 这里,array 是一个 3 行 4 列的整数二维数组。 初始化: int array[3][4] = {{1, 2, 3, 4},{5, 6, 7, 8},{9, 10, 11, 12}}; 2. 动态二维数组 使用指针和动态内存分配: 定义:

编译linux内核出现 arm-eabi-gcc: error: : No such file or directory

external/e2fsprogs/lib/ext2fs/tdb.c:673:29: warning: comparison between : In function 'max2165_set_params': -。。。。。。。。。。。。。。。。。。 。。。。。。。。。。。。。 。。。。。。。。 host asm: libdvm <= dalvik/vm/mterp/out/Inte