CPP2022-16-宏、函数重载与函数模板(上)

简介: CPP2022-16-宏、函数重载与函数模板

6-1 通用对数函数(宏)

分数 5

全屏浏览题目

切换布局

作者 李祥

单位 湖北经济学院

C语言库函数只提供以 e 和 10 为底数的对数函数。我们自行设计一个以任意正实数 a 为底数、任意正实数 x 为真数的通用对数函数 logax。

函数原型

double LogA(double a, double x);

说明:参数 a 是底数,a>0 且 a=1,x 是真数(幂),x>0,函数值是对数(指数) logax。

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

裁判程序

#include <stdio.h> #include <math.h> __________ int main() { double a, x, y; scanf("%lg%lg", &a, &x); y = LogA(a, x); printf("%g\n", y); return 0; }

注:裁判程序有很多,不止一个。

输入样例

0.49 0.16807

输出样例

2.5
#define LogA(a,b)(log(b)/log(a))

6-2 平方函数(宏)

分数 5

全屏浏览题目

切换布局

作者 李祥

单位 湖北经济学院

已知平方函数的原型如下:

函数原型

double Sqr(double x);

说明:参数 x 是任意实数,函数值为 x 的平方 x2。

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

裁判程序

#include <stdio.h> __________ int main() { double a, b; scanf("%lg", &a); b = Sqr(a); printf("%g\n", b); return 0; }

注:裁判程序有很多,不止一个。

输入样例

-0.7

输出样例

0.49

要求:不要使用 C 标准库函数如 pow 等。

#define Sqr(x)((x)*(x))

6-3 立方函数(宏)

分数 5

全屏浏览题目

切换布局

作者 李祥

单位 湖北经济学院

已知立方函数的原型如下:

函数原型

double Cube(double x);

说明:参数 x 是任意实数,函数值为 x 的立方 x3。

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

裁判程序

#include <stdio.h> __________ int main() { double a, b; scanf("%lg", &a); b = Cube(a); printf("%g\n", b); return 0; }

注:裁判程序有很多,不止一个。

输入样例

-0.3

输出样例

-0.027

要求:不要使用 C 标准库函数如 pow 等。

#define Cube(x)((x)*(x)*(x))

6-4 余切函数(宏)

分数 5

全屏浏览题目

切换布局

作者 李祥

单位 湖北经济学院

C语言库函数只提供正切函数 tanx,没有提供余切函数 cotx。我们用带参数的宏替换命令来实现它。

cotx=1/tanx

已知余切函数的原型如下:

double Cot(double x);

说明:参数 x 是任意角度的弧度,函数值为 x 的余切 cotx。

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

裁判程序

#include <stdio.h> #include <math.h> __________ int main() { double a, b; scanf("%lg", &a); b = Cot(a); printf("%g\n", b); return 0; }

输入样例

0.7853981633974483

输出样例

1

注:裁判程序有很多,不止一个。

#define Cot(x)(1/tan(x))

6-5 绝对值函数(宏)*

分数 5

全屏浏览题目

切换布局

作者 李祥

单位 湖北经济学院

C 函数库中提供整数绝对值 abs 函数和实数绝对值 fabs 函数,函数声明如下:

函数原型

int abs(int x); double fabs(double x);

说明:函数值为参数 x 的绝对值 ∣x∣。

请在空白处填写适当内容,用带参数的宏替换命令来实现相同的功能,将上面两个函数合并为一个,并命名为 Abs。

裁判程序1

#include <stdio.h> __________ int main() { int a, b; double x, y; scanf("%d %lg", &a, &x); b = Abs(a); y = Abs(x); printf("%d %g\n", b, y); return 0; }

输入样例1

-5 -2.5

输出样例1

5 2.5

输入样例2

7 3.8

输出样例2

7 3.8

输入样例3

0 0

输出样例3

0 0

输入样例4

-0 -0

输出样例4

0 0

注:裁判程序有很多,不止一个。

特别提示:注意实数为 -0.0 和 0.0 的情况。

#define Abs(x)((x)>0?(x):(x)<0?-(x):0)

6-6 面积计算器(函数重载)

分数 10

全屏浏览题目

切换布局

作者 何振峰

单位 福州大学

实现一个面积计算器,它能够计算矩形或长方体的面积。

函数接口定义:

int area(int x, int y); int area(int x, int y, int z);

第一个函数计算长方形的面积,其中x和y是长和宽。第二个函数计算长方体的表面积,x,y和z是长,宽和高。

裁判测试程序样例:

#include<iostream> #include<string> using namespace std; int area(int,int); int area(int,int,int); int main() { int i, repeat, c, x, y, z; cin>>repeat; for(i=0;i<repeat;i++){ cin>>c; if(c==2){ cin>>x>>y; cout<<area(x,y)<<endl; } if(c==3){ cin>>x>>y>>z; cout<<area(x,y,z)<<endl; } } return 0; } /* 请在这里填写答案 */

输入样例:

1. 2
2. 2 1 2
3. 3 2 3 4

输出样例:

1. 2
2. 52
1. int area(int x, int y)
2. {
3. return x*y;
4. }
5. int area(int x, int y, int z)
6. {
7. return 2*(x*y+x*z+y*z);
8. }
相关文章
|
消息中间件 NoSQL 数据库
一文讲透消息队列RocketMQ实现消费幂等
这篇文章,我们聊聊消息队列中非常重要的最佳实践之一:消费幂等。
一文讲透消息队列RocketMQ实现消费幂等
|
运维 Linux
Linux(CentOS)挂载数据盘并设置开机自动挂载
Linux(CentOS)挂载数据盘并设置开机自动挂载
1343 0
Linux(CentOS)挂载数据盘并设置开机自动挂载
|
搜索推荐 网络架构 UED
什么是超链接?
本文介绍超链接的基本概念及其在网络中的重要性。超链接作为Web的核心组成部分,由蒂姆·伯纳斯·李在1989年提出,与URL、HTTP共同构成Web的三大支柱。通过链接,用户能轻松从一个文档跳转至另一个文档。文章探讨了不同类型的链接,包括内部链接、外部链接与传入链接,并介绍了锚点链接的功能。此外,还强调了链接对于用户体验及搜索引擎优化(SEO)的重要性,以及如何合理构建链接以提升网站的可用性和搜索引擎排名。最后,提供了进一步学习资源,帮助读者深入了解URL结构与超链接的实际应用。
1380 3
|
JavaScript API 开发工具
(H5-Web3D-ThreeJS)在网页三维CAD中绘制窗户模型
本文介绍了如何使用mxcad3d在网页中创建一个简单的三维窗户模型。通过官方教程搭建环境,编写绘制窗户模型的代码,并在点击按钮后展示模型效果。最终模型包括窗框和玻璃部分,具备丰富的三维建模功能和便捷的API支持。
|
机器学习/深度学习 自然语言处理 数据挖掘
从理论到实践:详解GraphRAG框架下的多模态内容理解与生成
【10月更文挑战第10天】随着多媒体内容的爆炸性增长,如何有效地理解和生成跨模态的数据(如图像、文本和视频)变得越来越重要。近年来,图神经网络(GNNs)因其在处理非结构化数据方面的强大能力而受到广泛关注。在此背景下,Graph Retrieval-Augmented Generation (GraphRAG) 框架作为一种新的方法,通过结合图检索和生成模型来提升多模态内容的理解与生成效果。本文将深入探讨GraphRAG的基本原理、核心组件以及实际应用,并通过代码示例展示其在多媒体内容处理中的潜力。
1818 0
|
存储 缓存 算法
深入解析B树:数据结构、存储结构与算法优势
深入解析B树:数据结构、存储结构与算法优势
|
存储 关系型数据库 MySQL
【MySQL】存储引擎简介、存储引擎特点、存储引擎区别
【MySQL】存储引擎简介、存储引擎特点、存储引擎区别
342 2
|
安全
IPXProxy静态住宅代理:注册OpenAI Sora的关键
​随着OpenAI发布的Sora引起了广泛关注,这款革命性的文本转视频生成工具给视频创作领域带来了质的飞跃。许多人都对Sora充满了好奇,希望能够注册并使用它来提升创作水平。然而,许多用户在注册过程中遇到了网络环境的问题,这时候静态住宅代理的优势就显现出来了。
269 0
|
小程序 前端开发 JavaScript
小程序全栈开发:前端与后端的完美结合
【4月更文挑战第12天】本文介绍了小程序全栈开发,涵盖前端和后端的关键点。前端使用WXML和WXSS进行页面结构和样式设计,JavaScript处理逻辑及组件使用;后端采用Node.js等语言处理业务逻辑、数据库设计和API接口开发。前端与后端通过数据交互实现结合,采用前后端分离模式,支持跨平台运行。调试测试后,提交微信审核并上线运营。掌握前端后端结合是小程序成功的关键。
893 1
|
编解码 Linux 数据安全/隐私保护
深度探索:使用FFmpeg实现视频Logo的添加与移除(一)
深度探索:使用FFmpeg实现视频Logo的添加与移除
570 0