函数重载与函数模板

2023-10-27

键盘输入10个数(可能为整形、浮点型、双精度型及其字符类型),分别利用函数重载和函数模板,求出其中的最大值和最小值。

//函数重载
#include <iostream>
using namespace std;
int max(int* a)
{
	int r, i;//定义最大值r
	r = a[0];
	for (i = 1; i < 10; i++)
	{
		if (r < a[i])
			r = a[i];
	}
	return r;
}
int min(int* a)
{
	int r, i;//定义最小值r
	r = a[0];
	for (i = 1; i < 10; i++)
	{
		if (r > a[i])
			r = a[i];
	}
	return r;
}
float max(float* a)
{
	int i;
	float r;//定义最大值
	r = a[0];
	for (i = 1; i < 10; i++)
	{
		if (r < a[i])
			r = a[i];
	}
	return r;
}
float min(float* a)
{
	int i;
	float r;//定义最小值
	r = a[0];
	for (i = 1; i < 10; i++)
	{
		if (r > a[i])
			r = a[i];
	}
	return r;
}
double max(double* a)
{
	int i;
	double r;//定义最大值
	r = a[0];
	for (i = 1; i < 10; i++)
	{
		if (r < a[i])
			r = a[i];
	}
	return r;
}
double min(double* a)
{
	int i;
	double r;//定义最小值
	r = a[0];
	for (i = 1; i < 10; i++)
	{
		if (r > a[i])
			r = a[i];
	}
	return r;
}
char max(char* a)
{
	int i;
	char r;//定义最大值
	r = a[0];
	for (i = 1; i < 10; i++)
	{
		if (r < a[i])
			r = a[i];
	}
	return r;
}
char min(char* a)
{
	int i;
	char r;//定义最小值
	r = a[0];
	for (i = 1; i < 10; i++)
	{
		if (r > a[i])
			r = a[i];
	}
	return r;
}
int main()
{
	int i,choice;//定义变量
	int max_int, min_int, N_int[10];//定义最大值最小值及数组
	float max_float, min_float, N_float[10];
	double max_double, min_double, N_double[10];
	char max_char, min_char, N_char[10];
	cout << "1.整型 2.浮点型 3.双精度型 4.字符型" << endl;
	cout << "请选择你想要输入的类型:" ;
	cin >> choice;
	switch(choice)
	{
		case 1:
		{
			for (i = 0; i < 10; i++)
			{
				cin >> N_int[i];
			}
			max_int = max(N_int);
			min_int = min(N_int);
			cout << "最大的是" << max_int << " 最小的是" << min_int << endl;
			break;
		}
		case 2:
		{
			for (i = 0; i < 10; i++)
			{
				cin >> N_float[i];
			}
			max_float = max(N_float);
			min_float = min(N_float);
			cout << "最大的是" << max_float << " 最小的是" << min_float << endl;
			break;
		}
		case 3:
		{
			for (i = 0; i < 10; i++)
			{
				cin >> N_double[i];
			}
			max_double = max(N_double);
			min_double = min(N_double);
			cout << "最大的是" << max_double << " 最小的是" << min_double << endl;
			break;
		}
		case 4:
		{
			for (i = 0; i < 10; i++)
			{
				cin >> N_char[i];
			}
			max_char = max(N_char);
			min_char = min(N_char);
			cout << "最大的数是" << max_char << " 最小的数是" << min_char << endl;
			break;
		}
	}
	return 0;
}
//函数模板
#include <iostream>
using namespace std;
template <class T>
T max(T* a)
{
	int i;
	T r = a[0];//定义最大值
	for (i = 1; i < 10; i++)
	{
		if (r < a[i])
			r = a[i];
	}
	return r;
}
template <class T>
T min(T* a)
{
	int i;
	T r = a[0];//定义最小值
	for (i = 1; i < 10; i++)
	{
		if (r > a[i])
			r = a[i];
	}
	return r;
}
int main()
{
	int i, choice;//定义变量
	int max_int, min_int, N_int[10];//定义最大值最小值及数组
	float max_float, min_float, N_float[10];
	double max_double, min_double, N_double[10];
	char max_char, min_char, N_char[10];
	cout << "1.整型 2.浮点型 3.双精度型 4.字符型" << endl;
	cout << "请选择你想要输入的类型:";
	cin >> choice;
	switch (choice)
	{
	case 1:
	{
		for (i = 0; i < 10; i++)
		{
			cin >> N_int[i];
		}
		max_int = max(N_int);
		min_int = min(N_int);
		cout << "最大的是" << max_int << " 最小的是" << min_int << endl;
		break;
	}
	case 2:
	{
		for (i = 0; i < 10; i++)
		{
			cin >> N_float[i];
		}
		max_float = max(N_float);
		min_float = min(N_float);
		cout << "最大的是" << max_float << " 最小的是" << min_float << endl;
		break;
	}
	case 3:
	{
		for (i = 0; i < 10; i++)
		{
			cin >> N_double[i];
		}
		max_double = max(N_double);
		min_double = min(N_double);
		cout << "最大的是" << max_double << " 最小的是" << min_double << endl;
		break;
	}
	case 4:
	{
		for (i = 0; i < 10; i++)
		{
			cin >> N_char[i];
		}
		max_char = max(N_char);
		min_char = min(N_char);
		cout << "最大的数是" << max_char << " 最小的数是" << min_char << endl;
		break;
	}
	}
	return 0;
}

可以很容易看出函数模板要更简单,但是函数重载在某些情况也能媲美函数模板

13b44dac978c48878929cd2fc0b75ac5.jpg


看完动手点个赞,生活越过越灿烂

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

函数重载与函数模板 的相关文章

  • 在 Xamarin Android 中将图像从 URL 异步加载到 ImageView 中

    我有一个包含多个项目的 ListView 列表中的每个项目都应该有一个与之关联的图像 我创建了一个数组适配器来保存每个列表项并具有我希望加载的图像的 url 我正在尝试使用 Web 请求异步加载图像 并设置图像并在加载后在视图中更新它 但视
  • 为什么禁止在 constexpr 函数中使用 goto?

    C 14 对你能做什么和不能做什么有规则constexpr功能 其中一些 没有asm 没有静态变量 看起来相当合理 但标准也不允许goto in constexpr功能 即使它允许其他控制流机制 这种区别背后的原因是什么 我以为我们已经过去
  • 跨多个控件共享事件处理程序

    在我用 C 编写的 Windows 窗体应用程序中 我有一堆按钮 当用户的鼠标悬停在按钮上时 我希望按钮的边框发生变化 目前我有以下多个实例 每个按钮一个副本 private void btnStopServer MouseEnter ob
  • 将字符串从非托管代码传递到托管

    我在将字符串从非托管代码传递到托管代码时遇到问题 在我的非托管类中 非托管类 cpp 我有一个来自托管代码的函数指针 TESTCALLBACK FUNCTION testCbFunc TESTCALLBACK FUNCTION 接受一个字符
  • 使用 C# 在 WinRT 中获取可用磁盘空间

    DllImport kernel32 dll SetLastError true static extern bool GetDiskFreeSpaceEx string lpDirectoryName out ulong lpFreeBy
  • 如何针对 Nancy 中的 Active Directory 进行身份验证?

    这是一篇过时的文章 但是http msdn microsoft com en us library ff650308 aspx paght000026 step3 http msdn microsoft com en us library
  • 当 Cortex-M3 出现硬故障时如何保留堆栈跟踪?

    使用以下设置 基于 Cortex M3 的 C gcc arm 交叉工具链 https launchpad net gcc arm embedded 使用 C 和 C FreeRtos 7 5 3 日食月神 Segger Jlink 与 J
  • 按字典顺序对整数数组进行排序 C++

    我想按字典顺序对一个大整数数组 例如 100 万个元素 进行排序 Example input 100 21 22 99 1 927 sorted 1 100 21 22 927 99 我用最简单的方法做到了 将所有数字转换为字符串 非常昂贵
  • 使用 LINQ 查找列表中特定类型的第一个元素

    使用 LINQ 和 C 在元素列表中查找特定类型的第一个项目的最短表示法是什么 var first yourCollection OfType
  • 初始化变量的不同方式

    在 C 中初始化变量有多种方法 int z 3 与 int 相同z 3 Is int z z 3 same as int z z 3 您可以使用 int z z 3 Or just int z 3 Or int z 3 Or int z i
  • Windows 10 中 Qt 桌面应用程序的缩放不当

    我正在为 Windows 10 编写一个简单的 Qt Widgets Gui 应用程序 我使用的是 Qt 5 6 0 beta 版本 我遇到的问题是它根本无法缩放到我的 Surfacebook 的屏幕上 这有点难以判断 因为 SO 缩放了图
  • 像“1$”这样的位置参数如何与 printf() 一起使用?

    By man I find printf d width num and printf 2 1 d width num 是等价的 但在我看来 第二种风格应该与以下相同 printf d num width 然而通过测试似乎man是对的 为什
  • 网络参考共享类

    我用 Java 编写了一些 SOAP Web 服务 在 JBoss 5 1 上运行 其中两个共享一个类 AddressTO Web 服务在我的 ApplycationServer 上正确部署 一切都很顺利 直到我尝试在我的 C 客户端中使用
  • 用 C 实现 Unix shell:检查文件是否可执行

    我正在努力用 C 语言实现 Unix shell 目前正在处理相对路径的问题 特别是在输入命令时 现在 我每次都必须输入可执行文件的完整路径 而我宁愿简单地输入 ls 或 cat 我已经设法获取 PATH 环境变量 我的想法是在 字符处拆分
  • 可空属性与可空局部变量

    我对以下行为感到困惑Nullable types class TestClass public int value 0 TestClass test new TestClass Now Nullable GetUnderlyingType
  • GDK3/GTK3窗口更新的精确定时

    我有一个使用 GTK 用 C 语言编写的应用程序 尽管该语言对于这个问题可能并不重要 这个应用程序有全屏gtk window与单个gtk drawing area 对于绘图区域 我已经通过注册了一个刻度回调gtk widget add ti
  • 在 ASP.NET 中将事件冒泡为父级

    我已经说过 ASP NET 中的层次结构 page user control 1 user control 2 control 3 我想要做的是 当控件 3 它可以是任何类型的控件 我一般都想这样做 让用户用它做一些触发回发的事情时 它会向
  • 更改显示的 DPI 缩放大小使 Qt 应用程序的字体大小渲染得更大

    我使用 Qt 创建了一些 GUI 应用程序 我的 GUI 应用程序包含按钮和单选按钮等控件 当我运行应用程序时 按钮内的按钮和字体看起来正常 当我将显示器的 DPI 缩放大小从 100 更改为 150 或 200 时 无论分辨率如何 控件的
  • 如何将字符串“07:35”(HH:MM) 转换为 TimeSpan

    我想知道是否有办法将 24 小时时间格式的字符串转换为 TimeSpan 现在我有一种 旧时尚风格 string stringTime 07 35 string values stringTime Split TimeSpan ts new
  • 不同类型的指针可以互相分配吗?

    考虑到 T1 p1 T2 p2 我们可以将 p1 分配给 p2 或反之亦然吗 如果是这样 是否可以不使用强制转换来完成 或者我们必须使用强制转换 首先 让我们考虑不进行强制转换的分配 C 2018 6 5 16 1 1 列出了简单赋值的约束

随机推荐

  • Qt环境生成dump解决异常崩溃

    背景 对于经常使用C C 的伙伴来说 程序有问题动不动就罢工崩溃的问题简直不能太熟悉了 比如本地测试通过打包发布的release版本Qt程序 在客户环境下仍可能出现异常崩溃的问题 一般通过客户反馈以及分析系统运行日志 问题基本都能够得到快速
  • 洛谷表达式求值

    题目描述 给定一个只包含加法和乘法的算术表达式 请你编程计算表达式的值 输入输出格式 输入格式 一行 为需要你计算的表达式 表达式中只包含数字 加法运算符 和乘法运算符 times 且没有括号 所有参与运算的数字均为 000 到 231 1
  • CentOS 7下启动、关闭、重启、查看MySQL服务

    1 启动命令 root xufeng Desktop service mysqld start Redirecting to bin systemctl start mysqld service 2 关闭命令 root xufeng ser
  • 栈系列之 递归实现一个栈的逆序

    算法专题导航页面 算法专题 栈 栈系列之 栈排序 栈系列之 最小栈的实现 栈系列之 用栈实现队列 栈系列之 递归实现一个栈的逆序 题目 使用递归来完成一个栈的逆序操作 其他限制 不能借助任何其他数据结构 图示 无 分析 递归思想原本就和栈这
  • 力扣第五十三道最大子数组和

    题目 给你一个整数数组 nums 请你找出一个具有最大和的连续子数组 子数组最少包含一个元素 返回其最大和 子数组 是数组中的一个连续部分 输入 nums 2 1 3 4 1 2 1 5 4 输出 6 解释 连续子数组 4 1 2 1 的和
  • Exploring Large Language Models for Knowledge Graph Completion

    本文是LLM系列文章 针对 Exploring Large Language Models for Knowledge Graph Completion 的翻译 探索用于知识图谱补全的大型语言模型 摘要 1 引言 2 相关工作 3 方法 4
  • C/C++中的日期和时间

    C C 中的日期和时间 撰文 周翔 摘要 本文从介绍基础概念入手 探讨了在C C 中对日期和时间操作所用到的数据结构和函数 并对计时 时间的获取 时间的计算和显示格式等方面进行了阐述 本文还通过大量的实例向你展示了time h头文件中声明的
  • 数据结构---单链表的增删改查(C语言实现)

    链表的创建 链表元素插入 头插 尾插 指定位置插入 链表元素的删除 链表元素的查看 1 链表的创建 有头链表 有头链表的创建就是创建一个头结点代表此链表 用一个结构体指针指向头结点 通常称为头指针 方便找到此链表 头结点的数据域一般不做处理
  • 软件测试笔记(五)- 动态黑盒测试

    了解在没有代码的情况甚至不懂得编程的情况下的软件测试技术 一 动态黑盒测试 戴上眼罩测试软件 不深入代码细节测试软件的方法称为 动态黑盒测试 它是动态的 因为程序在运行 软件测试员像用户一样使用它 同时 它是黑盒子 因为测试时不知道程序如何
  • STViT-R 代码阅读记录

    目录 一 SwinTransformer 1 原理 2 代码 二 STViT R 1 中心思想 2 代码与原文 本次不做具体的训练 只是看代码 所以只需搭建它的网络 执行一次前向传播即可 一 SwinTransformer 1 原理 主要思
  • H5C3部分面试题汇总

    1 HTML和HTML5 CSS和CSS3相比 有什么变化 HTML5中新增的内容有 自定义属性 data id 语义化更好的内容标签 header nav footer aside article section 音频 视频标签 audi
  • 复习之linux系统中的软件管理

    一 linux系统中软件包 1 软件包的类型 注意在rhel8中只能使用绿色软件 源码编译软件和rpm软件 类型 支持的条件 DEB UBlinux DEBlinux 用不了 RPM redhat centOS fadora bz2 gz
  • 栈破坏的分析

    在程序运行中 栈主要用来保存局部变量 函数参数 函数调用的返回地址以及栈底 以x86为例 与栈关系比较大的几个寄存器主要是 ebp 基址指针寄存器 extended base pointer 其内存放着一个指针 该指针永远指向系统栈最上面一
  • jvm-04运行时数据区(方法区)

    1 堆 栈 方法区的交互关系 运行时数据区结构图 堆 栈 方法区的交互关系 2 方法区的理解 Java虚拟机规范 中明确说明 尽管所有的方法区在逻辑上属于堆的一部分 但一些简单的实现可能不会选择去进行垃圾收集或者进行压缩 但对于HotSpo
  • QSPI协议详解(二)

    1 QSPI协议简介 QSPI是Queued SPI的简写 是Motorola公司推出的SPI接口的扩展 比SPI应用更加广泛 在SPI协议的基础上 Motorola公司对其功能进行了增强 增加了队列传输机制 推出了队列串行外围接口协议 即
  • Linux和Windows中下载FFmpeg

    Linux和Windows中下载FFmpeg 注意 在Linux下下载FFmpeg 必须要让 usr local ffmpeg中的目录为空 否则无法生成新的版本内容 我就是了 1 Linux下 1 打开官网 点击Download 然后点击L
  • coderforces round 894(div.3)

    Problem A Codeforces AC代码 include
  • 【跑实验03】如何可视化GT边界框,如何选择边界框内部的边界框,如何可视化GT框和预测框,如何定义IoU阈值下的不同边界框?

    文章目录 一 如何可视化GT边界框 二 GT框和预测框的可视化 三 根据IoU阈值来选择 一 如何可视化GT边界框 from PIL import Image ImageDraw def draw bboxes image bboxes c
  • Spring实现控制反转(IOC)的三种方式(零)——理解IOC

    学过Spring的应该都知道Spring的IOC和AOP 然而我刚接触Spring不久 学习了IOC 发现掌握的不是很好 停留在概念上 今天就以例子来总结一下Spring的IOC 也希望各位大大能够指点迷津 IOC 也就是控制反转 创建对象
  • 函数重载与函数模板

    键盘输入10个数 可能为整形 浮点型 双精度型及其字符类型 分别利用函数重载和函数模板 求出其中的最大值和最小值 函数重载 include