C语言练习:求数组的最大值与最小值
文章目录
- 1. 提出任务
- 2. 完成任务
- 2.1 方法一:通过返回结构体指针来间接返回结果
- 2.1.1 编写程序,实现功能
- 2.1.2 运行程序,查看结果
- 2.2 方法二:通过参数传递数组,并在函数中修改传入的参数
- 2.2.1 编写程序,实现功能
- 2.2.2 运行程序,查看结果
- 3. 实战小结
1. 提出任务
- 本次任务要求编写C程序,求出整型数组的最大值和最小值。通过两种方法实现:一是使用结构体指针返回结果,动态分配内存存储最值;二是通过指针参数直接修改传入的变量,避免动态内存分配。两种方法均通过遍历数组更新最值,最终输出结果。任务旨在加深对指针、结构体及函数参数传递的理解,同时掌握高效处理数组最值问题的技巧。
2. 完成任务
2.1 方法一:通过返回结构体指针来间接返回结果
2.1.1 编写程序,实现功能
- 创建
FindMaxMin01.c
程序
#include <stdio.h>
#include <stdlib.h>// 定义结构体用于存放最大值和最小值
typedef struct Result
{int min;int max;
} Result;// 函数用于求数组的最值,返回结构体指针
Result *findMinMax(int arr[], int size)
{Result *res = (Result *)malloc(sizeof(Result));if (size > 0){res->min = arr[0];res->max = arr[0];for (int i = 1; i < size; i++){if (arr[i] < res->min){res->min = arr[i];}if (arr[i] > res->max){res->max = arr[i];}}}return res;
}int main()
{int arr[] = {5, 3, 8, 1, 9, 12, 67, -34, 100, 37, 87};int size = sizeof(arr) / sizeof(arr[0]);Result *result = findMinMax(arr, size);printf("MinValue: %d\n", result->min);printf("MaxValue: %d\n", result->max);free(result); // 释放动态分配的内存return 0;
}
- 代码说明:该代码通过结构体
Result
存储数组的最小值和最大值。函数findMinMax
遍历数组,更新最值并返回结构体指针。主函数中定义了一个数组,调用findMinMax
获取最值并输出。代码逻辑清晰,动态分配内存后需手动释放,避免内存泄漏。整体实现了高效的最值查找功能。
2.1.2 运行程序,查看结果
- 运行
FindMaxMin.c
程序
2.2 方法二:通过参数传递数组,并在函数中修改传入的参数
2.2.1 编写程序,实现功能
- 创建
FindMaxMin02.c
程序
#include <stdio.h>// 函数用于求数组的最值,通过指针参数返回结果
void findMinMax(int arr[], int size, int *min, int *max)
{if (size > 0){*min = arr[0];*max = arr[0];for (int i = 1; i < size; i++){if (arr[i] < *min){*min = arr[i];}if (arr[i] > *max){*max = arr[i];}}}
}int main()
{int arr[] = {5, 3, 8, 1, 9, 12, 67, -34, 100, 37, 87};int size = sizeof(arr) / sizeof(arr[0]);int min, max;findMinMax(arr, size, &min, &max);printf("MinValue: %d\n", min);printf("MaxValue: %d\n", max);return 0;
}
- 代码说明:该代码通过指针参数返回数组的最小值和最大值。函数
findMinMax
遍历数组,更新指针指向的最值。主函数中定义数组,调用findMinMax
并传入min
和max
的地址,最后输出结果。代码避免了动态内存分配,直接通过指针传递结果,简洁高效,适合处理数组最值问题。
2.2.2 运行程序,查看结果
- 运行
FindMaxMin02.c
程序
3. 实战小结
- 在本次实战中,我们通过两种不同的方法实现了对整型数组最大值和最小值的查找。第一种方法通过返回结构体指针来间接返回结果,利用动态内存分配存储最值,代码逻辑清晰,但需注意手动释放内存以避免内存泄漏。第二种方法通过指针参数直接修改传入的参数,避免了动态内存分配,代码更加简洁高效。两种方法各有优劣,第一种适合需要返回多个值的场景,第二种则更适合对性能要求较高的场景。通过本次实战,我加深了对指针、结构体以及函数参数传递的理解,同时也掌握了如何根据需求选择合适的方法来解决问题。
相关文章:
C语言练习:求数组的最大值与最小值
文章目录 1. 提出任务2. 完成任务2.1 方法一:通过返回结构体指针来间接返回结果2.1.1 编写程序,实现功能2.1.2 运行程序,查看结果 2.2 方法二:通过参数传递数组,并在函数中修改传入的参数2.2.1 编写程序,实…...
【TCP】SYN、ACK、FIN、RST、PSH、URG的全称
在 TCP 协议中,SYN、ACK、FIN、RST、PSH 和 URG 都是控制标志位(Flags),每个标志位对应不同的功能。它们的全称如下: URG:(URGent)紧急 ACK:(ACKnowledgment)确认 PSH:(PuSH)推送 RS…...
Re77 读论文:LoRA: Low-Rank Adaptation of Large Language Models
诸神缄默不语-个人CSDN博文目录 诸神缄默不语的论文阅读笔记和分类 论文全名:LoRA: Low-Rank Adaptation of Large Language Models ArXiv网址:https://arxiv.org/abs/2106.09685 官方GitHub网站(包含在RoBERTa、DeBERTa、GPT-2上用Lora微调…...
《OpenCV 4.10.0 实例:开启图像处理新世界》
《OpenCV 4.10.0 实例:开启图像处理新世界》 一、OpenCV 4.10.0 初印象二、环境搭建:开启 OpenCV 之旅(一)不同系统安装指南(二)配置细节与技巧 三、基础图像处理实例(一)图像读取、…...
硬件电路(3)-PT100温度采集电路
一、概述 PT100是铂热电阻,它的阻值会随着温度的变化而改变。PT后的100即表示它在0℃时阻值为100欧姆,在100℃时它的阻值约为138.5欧姆。它的工作原理:当PT100在0摄氏度的时候它的阻值为100欧姆,它的阻值会随着温度上升而成匀速增…...
计算机网络——数据链路层-流量控制和可靠传输
一、流量控制 流量控制是指由接收方及时控制发送方发送数据的速率,使接收方来得及接受。 • 停止等待流量控制 • 滑动窗口流量控制 1、停止—等待流量控制 停止-等待流量控制的基本原理是发送方每发出一帧后,就要等待接收方的应答信号ÿ…...
sqlserver数据库备份和还原
一、备份 打开smss,选中数据库-任务-备份 地址选择默认如:C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\Backup\ (远程服务器文件夹,非本机文件夹) PS:备份后编辑下数据 二、还原 PS:如果提示数…...
Python爬虫基础——认识网页结构(各种标签的使用)
1、添加<div>标签的代码定义了两个区块的宽度和高度均为100px,边框的格式也相同,只是区块中显示的内容不同; 2、添加<ul>和<ol>标签分别用于定义无序列表和有序列表。<il>标签位于<ul>标签或<ol>标签之…...
Linux双端口服务器:端口1的文件系统目录挂载到端口2
目录 一、服务器安装NFS服务并配置二、文件挂载三、持久化挂载总结为什么服务器配置多个端口 目前有一台服务器,不过他设置了两个SSH的端口,通过下面方法可以让这两个端口连接的主机能够共享同一个文件系统,原本这两个端口的文件系统是隔离的…...
unity学习11:地图相关的一些基础
目录 1 需要从 unity的 Asset Store 下载资源 1.1 下载资源 1.2 然后可以从 package Manager 里选择下载好的包,import到项目里 2 创建地形 2.1 创建地形 2.2 地形 Terrain大小 2.3 各种网格的尺寸大小 2.4 比较这个地形尺寸和创建的其他物体的大小对比 3 …...
如何在 Spring Cloud Gateway 中创建全局过滤器、局部过滤器和自定义条件过滤器
Spring Cloud Gateway 是一个功能强大的 API 网关,能够处理 HTTP 请求、响应及路由。通过过滤器机制,您可以在请求和响应过程中进行各种处理操作,如记录日志、身份验证、限流等。Spring Cloud Gateway 提供了三种主要类型的过滤器:…...
总分支机构跨网文件交换解决方案几个关键要点
跨国公司和国内大型集团的日常运营中,总分支机构之间的文件交换已成为必不可少的环节。然而,跨网文件交换面临着诸多挑战,比如安全性、效率、合规性、管理便捷性、技术兼容性和成本效益等。 为了解决这些问题,在挑选总分支机构跨网…...
机器人手眼标定
机器人手眼标定 一、机器人手眼标定1. 眼在手上标定基本原理2. 眼在手外标定基本原理 二、眼在手外标定实验三、标定精度分析 一、机器人手眼标定 要实现由图像目标点到实际物体上抓取点之间的坐标转换,就必须拥有准确的相机内外参信息。其中内参是相机内部的基本参…...
将 Docker 数据迁移到新磁盘:详细操作指南
将 Docker 数据迁移到新磁盘:详细操作指南 背景 在容器化应用的部署中,Docker 通常将数据存储在默认的 /var/lib/docker 目录。然而,随着容器数量的增加和镜像的累积,该目录可能会迅速占满系统磁盘空间,从而影响系统…...
AWS re:Invent 的创新技术
本月早些时候,Amazon 于 12 月 1 日至 5 日在内华达州拉斯维加斯举行了为期 5 天的 re:Invent 大会。如果您从未参加过 re:Invent 会议,那么最能描述它的词是“巨大”——不仅从与会者人数(60,000 人)来看&…...
无人机低小慢探测难题!
一、探测难度增加 由于无人机的雷达散射面积小,雷达在探测时接收到的反射信号相对较弱。这使得雷达系统需要更高的灵敏度和更先进的信号处理算法才能有效捕捉到无人机的信号。在复杂环境中,如城市、山区或海洋,背景噪声和干扰源众多…...
第2章:Go语言基础语法
第2章:Go语言基础语法 1. 变量和数据类型 1.1 基本数据类型 Go语言提供了以下基本数据类型: // 整数类型 var intVar1 int // 根据系统位数,32或64位 var intVar2 int8 // -128 到 127 var intVar3 int16 // -32768 到 32767 var i…...
RP2K:一个面向细粒度图像的大规模零售商品数据集
这是一种用于细粒度图像分类的新的大规模零售产品数据集。与以往专注于相对较少产品的数据集不同,我们收集了2000多种不同零售产品的35万张图像,这些图像直接在真实的零售商店的货架上拍摄。我们的数据集旨在推进零售对象识别的研究,该研究具…...
pnpm安装与使用
pnpm官网 全局安装 npm install pnpm -g设置源 // 查看源 pnpm config get registry // 切换淘宝源 pnpm config set registry https://registry.npmmirror.com/ 移除 pnpm remove 包名称 // 移除包 pnpm remove 包名称 --global // 移除全局包 更新 pnpm up // 更新所有…...
c# 服务中启动exe窗体程序
Windows服务默认在会话0(Session 0)中运行,这是一个隔离的环境,旨在防止服务与应用程序和用户会话交互,从而提高系统的稳定性和安全性。由于这个原因,直接从服务启动的GUI应用程序将不会显示,因…...
使用pip-chill清理pip依赖包,清理不使用的包
最近需要精简python项目的依赖,需要清理一下哪些代码里面没有使用的包,查询了一下,记录 pip-chill 是一个用于管理 Python 项目中依赖项的工具,可以帮助您保持所需依赖项的清单简洁明了,并删除不必要的依赖。 1. 安装 …...
【算法题系列】LeetCode 5.最长回文子串|JavaScript 5种思路实现
题目描述 给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。 示例 1: 输入: "babad" 输出: "bab" 注意: "aba" 也是一个有效答案。 示例 2: 输入: "cbbd" 输出: &q…...
QT6编程入门(一)
1、QT6介绍 1.1、QT6概述 Qt 是一个跨平台的 C 应用程序框架,它被广泛用于开发图形用户界面(GUI)应用程序,同时也可以用于开发非GUI程序,如控制台工具和服务器。Qt 被设计成能够在多种操作系统上运行,包括…...
串口通信控制LED、马达、蜂鸣器、风扇
1.STM32U575RITx 设置引脚 编写main.c //对fputc重写,方便调用printf函数 int fputc(int ch, FILE* F){HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 10);return ch; } //main函数的主要循环while (1){char whole_buf[128];memset(whole_buf, 0, siz…...
每日一题:BM2 链表内指定区间反转
文章目录 链表区间反转教学内容1. 任务描述2. 题目分析例子 3. 思路4. 详细步骤4.1 创建虚拟头节点4.2 寻找反转区间的前一个节点4.3 反转区间中的节点4.4 重新连接链表4.5 返回结果 5. 代码实现6. 代码解析6.1 初始化虚拟头节点6.2 寻找反转区间的前一个节点6.3 反转区间中的节…...
Cherno C++学习笔记 P50 C++当中的动态库
在上一篇文章当中我们学习了C当中是如何使用静态库的,这一篇我们会讲一下如何使用动态库,并同样用GLFW这个已有的库来举例子。 有了静态库的经验,其实动态库就好理解和使用多了。这两者的区别是,静态链接发生在编译的时候&#x…...
【Flink CDC】Flink CDC的Schema Evolution表结构演变的源码分析和流程图
Flink CDC版本:3.2.1 说明:本文从SchemaOperator接收到,表结构变更事件开始,表结构变更事件应由source端产生,本文不讨论。 可以先看流程图,研究源码。 参考文章: Flink cdc3.0动态变更表结构—…...
计算机网络 (27)IP多播
前言 IP多播(也称多址广播或组播)技术是一种允许一台或多台主机(多播源)发送单一数据包到多台主机(一次性的、同时的)的TCP/IP网络技术。 一、基本概念 定义:多播作为一点对多点的通信ÿ…...
当算法遇到线性代数(四):奇异值分解(SVD)
SVD分解的理论与应用 线性代数系列相关文章(置顶) 1.当算法遇到线性代数(一):二次型和矩阵正定的意义 2.当算法遇到线性代数(二):矩阵特征值的意义 3.当算法遇到线性代数࿰…...
鸿蒙操作系统(HarmonyOS)
鸿蒙操作系统(HarmonyOS)是华为公司推出的一款面向未来、面向全场景的分布式操作系统。它旨在为用户提供一个更加智能、便捷和安全的操作环境,支持多种终端设备之间的无缝协作。在鸿蒙应用开发中,ArkUI作为官方推荐的用户界面开发…...
通义灵码在跨领域应用拓展之物联网篇
目录 一.引言 二.通义灵码简介 三.通义灵码在物联网领域的设备端应用 1.传感器数据采集 (1).不同类型传感器的数据读取 (2).数据转换与预处理 2.设备控制指令接收和执行 (1).指令解析与处理 (2).设备动作执行 四.通义灵码在物联网领域的云端平台应用 1.数据存储和管…...
CSS语言的数据库交互
CSS语言的数据库交互:一种新潮流的探索 引言 在现代网页开发中,CSS(层叠样式表)无疑是构建优美和响应式网页的重要工具。然而,关于CSS和数据库之间的直接交互,尽管并不是一种常见的做法,却引发…...
[SMARTFORMS] 创建二维码
我们可以使用事务码SE73创建二维码 选择系统条形码,点击"更改"按钮 点击 创建选项 选择"新" 输入二维码名称和简短描述,点击"确认"按钮 选择"QR CODE 2005",点击"确认"按钮 选择"No…...
数据项目相关的AWS云计算架构设计
电商数据平台架构 高性能:使用Amazon EC2的计算优化实例处理业务逻辑和数据计算,搭配Amazon ElastiCache内存缓存,加速数据读取。应用负载均衡器(ALB)在EC2实例间分发流量,实现负载均衡。高可用性…...
智慧农业应用场景|珈和科技高标准农田信息化监管平台解决方案
近年来,珈和科技持续深耕农业领域,深耕农业时空大数据服务。 珈和利用遥感大数据、云计算、移动互联网、物联网、人工智能等先进技术,搭建“天空地一体化”监测体系,并创新建设了150的全球领先算法模型,可为100多种农作…...
C++ operator = 返回void 会发生什么?
1.operator 正常情况 #include <iostream> using namespace std;class Box { public:Box(double L) : length(L) {}Box(const Box& b){}Box& operator (const Box&){return *this;}public:double length; // 长度 };int main() {Box box1(1.0);Box box2(…...
Scala 模式匹配
Scala 模式匹配 引言 Scala 作为一种多范式编程语言,不仅支持面向对象编程,还融合了函数式编程的特性。在其丰富的特性集中,模式匹配(Pattern Matching)尤为引人注目,它是一种在许多编程语言中都有应用的编程范式,但在 Scala 中得到了特别强大的支持。模式匹配允许开发…...
微信小程序中 “页面” 和 “非页面” 的区别
微信小程序中 “页面” 和 “非页面” 的区别,并用表格进行对比。 核心概念: 页面 (Page): 页面是微信小程序中用户可以直接交互的视图层,也是小程序的基本组成部分。每个页面都有自己的 WXML 结构、WXSS 样式和 JavaScript 逻辑…...
解耦Java应用程序的方法和技巧
解耦 Java 应用程序是一项重要的设计原则是减少组件之间的依赖关系,使系统更加模块化、灵活和可维护。通过分离,您可以更轻松地更改、扩展或测试应用程序的各个部分,而不会影响其他部分。 分离 Java 应用程序需要应用减少组件之间直接依赖关系…...
Go语言的 的设计模式(Design Patterns)基础知识
Go语言的设计模式基础知识 引言 设计模式是一种在软件开发中经常使用的解决特定问题的通用方案。它们为开发者提供了一种有效的方式来组织代码、提高代码的可复用性、可维护性和灵活性。在众多编程语言中,Go语言因其独特的特性,如并发支持和简洁的语法…...
【Uniapp-Vue3】常用的表单组件button和input
表单组件中最常用的就是button组件和input组件 一、button组件 常用属性: <template><button>普通按钮</button><button size"mini">小按钮</button><button type"primary">蓝色按钮</button><…...
深入理解非对称加密:用Java实现RSA加解密
目录 一、非对称加密算法概述 二、Java 中实现非对称加密 非对称加密(Asymmetric Encryption)是一种加密方式,其中使用一对密钥:公钥(Public Key)和私钥(Private Key)。这种加密算…...
钓鱼邮件 wp
背景:Bob收到了一份钓鱼邮件,请找出木马的回连地址和端口。 1.打开文件 2.发现base64编码 3.base64解码 将base64编码全部存储在文件 base64.txt 中。 使用命令cat base6.txt | base64 -d | less解码并查看。 关键字: PK 知识点:…...
飞书企业消息实践
一、飞书自带的消息机器人限制 频控策略 - 服务端 API - 飞书开放平台 自定义机器人的频率控制和普通应用不同,为单租户单机器人 100 次/分钟,5 次/秒。建议发送消息尽量避开诸如 10:00、17:30 等整点及半点时间,否则可能出现因系统压力导致…...
逆向安卓抓包
打开Mumu网易,打开设置,打开其他,开启root权限 打开Mumu网易,找到apk安装藏航准备网.apk charles配置:proxy setting 端口9888 查看当地IP:help--->local IP address SSL Proxying Setting--->Add---->IP…...
简单的spring boot tomcat版本升级
简单的spring boot tomcat版本升级 1. 需求 我们使用的springboot版本为2.3.8.RELEASE,对应的tomcat版本为9.0.41,公司tomcat对应版本发现攻击者可发送不完整的POST请求触发错误响应,从而可能导致获取其他用户先前请求的数据,造…...
导出中心设计
业务背景 应用业务经常需要导出数据,但是并发的导出以及不合理的导出参数常常导致应用服务的内存溢出、其他依赖应用的崩溃、导出失败;因此才有导出中心的设计 设计思想 将导出应用所需的内存转移至导出中心,将导出的条数加以限制…...
zookeeper 数据类型
文章目录 引言I Znodezonde stat (状态信息)znode类型临时\永久序列化特性引言 在结构上与标准文件系统非常类似,拥有一个层次的命名空间,都是采用树形层次结构 Zookeeper树中的每个节点被称为:Znode,没有文件和目录之分。Znode兼具文件和目录两种特点Znode存储数据大小有…...
INT305 Machine Learning
W1 Introduction Nearest Neighbor Preliminaries and Nearest Neighbor Methods • Suppose we’re given a novel input vector 𝑥 we’d like to classify. • The idea: find the nearest input vector to 𝑥 in the training set and copy …...
OneFlow和PyTorch在性能上有哪些区别?
OneFlow 和 PyTorch 在性能上的区别主要体现在以下几个方面: 本篇文章的目录 分布式训练性能 硬件利用率和显存优化 模型训练速度 OneFlow:默认采用静态图模式,在模型训练前会对计算图进行编译优化,能够减少运行时的开销&…...