使用C语言函数对数组进行操作

        前言

        在我们了解数组和函数之后,我们对数组和函数进行结合,之后完成一些操作吧

        题目描述

        杰克想将函数与数组结合进行一些操作,以下是他想要达到的效果,请你帮帮他吧!

        创建一个整型数组,完成对数组的操作

        1.实现函数init(),初始化数组全为0。

        2.实现函数print(),打印数组每个元素。

        3.实现函数reverse(),完成数组元素的逆置。

        输入描述:

        无

        输出描述:

        三行,第一行打印数组每个元素,第二行逆置,第三行初始化

        题目分析

        我们来分析一下这道题目,我们需要先定义一个数组,但是题目中没有要求,我们就定义数组arr={5,2,0,1,3,1,4},哎,这里也和代码浪漫一下吧,博主也只能如此了。

        我们看看第一条要求,我们需要对数组进行初始化,使用init函数实现,在这个时候,我们需要想到初始化数组的时候我们需要遍历数组之后将0赋予数组中的元素,所以这里我们需要for循环来实现,但是我们不知道数组中的元素个数啊,我们需要使用sizeof操作符来实现对我们数组元素的计算,如果有小伙伴对sizeof操作符的使用方法不太理解可以翻翻博主之前的博客哦。

        第二条要求是打印数组中的元素,这个就简单了,我们使用for循环直接打印就好啦。

        第三条要求我们完成数组元素的逆置,这里我们就需要动点脑筋了,我们需要置换数组中的元素,再来一遍,上图!!!

        

        如图所示3步走,之后就可以逆置得到我们想要的数组了,话不多说了,上代码

        代码展示

        

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
//初始化函数
void init(int arr[], int sz)
{int i;for (i = 0;i < sz;i++){arr[i]=0;}
}
//输出函数
void print(int arr[], int sz)
{int i;for (i = 0;i < sz;i++){printf("%d", arr[i]);}printf("\n");
}
//逆置函数
void reserve(int arr[], int left,int right)
{//注意,这里我们应该先判断之后再置换,不能等到置换结束之后再判断,这样会导致程序bugif (left < right){char tmp = arr[left];arr[left] = arr[right];arr[right] = tmp;reserve(arr, left + 1, right - 1);}
}
int main()
{int arr[] = { 5,2,0,1,3,1,4 };//计算数组中元素个数int sz = sizeof(arr) / sizeof arr[0];int right = sz - 1;int left = 0;print(arr, sz);reserve(arr, left,right);print(arr, sz);init(arr, sz);print(arr, sz);return 0;
}

        代码解析

        我们先来看看主函数,我们定义数组,之后计算数组中元素个数,之后我们注意,在我们传参的时候在init函数和print函数中只需要将数组的首地址和数组中元素个数传输过去,但是在逆置函数reverse中我们需要将数组元素的左右下标定义好之后进行传参。

        注意啦,在这里我们使用reserve函数的时候我们需要先判断数组中元素左下标是否小于右下标,我们不能将判断放在置换之后,这样的话会发生一个问题,什么问题呢,就是当我们输入的数组元素个数是偶数的时候,在最后一步会发生两次置换,以520131为例,如果我们输入数组中元素是520131的话,置换后的结果就会变为130125,我们会发现01的位置没有改变,这里其实是发生了两次置换,当我们数组中元素置换为131025的时候中间元素再次进行了置换,这里我们就会发现,唉,这个代码是有问题的。

        

        修正:

        

        

        运行结果

        

        

        兄弟们,今天就到这里喽,大家如果有不了解的问题,评论区我随时都在哦,欢迎大家评论区留言嘞!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/804318.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

签约速递 | 看零信任如何打造安全互联的数字底座?

近期&#xff0c;易安联再传佳音&#xff0c;签约南通市公安局、隆基绿能科技股份有限公司、南京体育学院等&#xff0c;持续为客户提供功能更完善、体验更好的零信任安全解决方案&#xff0c;赋能千行百业数字化转型升级&#xff0c;共创网络安全繁荣生态。 南通市公安局 数字…

K-means聚类算法的原理、应用与实例

文章目录 K-means 聚类算法&#xff1a;原理K-means 聚类算法的应用K-means 聚类算法的优化与改进 一个使用 K-means 聚类算法进行客户细分的简单实例 K-means 聚类算法&#xff1a;原理 K-means 算法是一种经典的无监督学习方法&#xff0c;用于对未标记的数据集进行分群&…

智慧公厕是智慧城市建设中不可或缺的一部分

智慧城市的数字化转型正在取得显著成效&#xff0c;各项基础设施的建设也在迅速发展&#xff0c;其中智慧公厕成为了智慧城市体系中不可或缺的一部分。作为社会生活中必要的设施&#xff0c;公共厕所的信息化、数字化、智慧化升级转型能够实现全区域公共厕所管理的横向打通和纵…

macOS 启动 Nacos(2),50家大厂面试万字精华总结

进来之后一定要选择支持 arm64 的版本不然会出现因为版本不支持导致无法启动 WARNING: The requested images platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested点击 copy docker pull nacos/naco…

Blender2.83 下载地址及安装教程

Blender是一款开源的3D计算机图形软件&#xff0c;广泛应用于动画制作、游戏开发、建模、渲染等领域。它提供了一套强大的工具和功能&#xff0c;让用户能够进行三维建模、动画制作和视觉效果的创作。 Blender支持多种文件格式的导入和导出&#xff0c;使用户能够与其他软件进…

Redis从入门到精通(七)Redis实战(四)库存超卖、一人一单与Redis分布式锁

↑↑↑请在文章开头处下载测试项目源代码↑↑↑ 文章目录 前言4.3 优惠券秒杀4.3.4 库存超卖问题及其解决4.3.4.1 问题分析4.3.4.2 问题解决 4.3.5 一人一单需求4.3.5.1 需求分析4.3.5.2 代码实现4.3.5.3 并发问题4.3.5.4 悲观锁解决并发问题4.3.5.5 集群环境下的并发问题 4.4 …

最新版手机软件App下载排行网站源码/App应用商店源码

内容目录 一、详细介绍二、效果展示1.部分代码2.效果图展示 三、学习资料下载 一、详细介绍 一款简洁蓝色的手机软件应用app下载排行&#xff0c;app下载平台&#xff0c;最新手机app发布网站响应式织梦模板。 主要有&#xff1a;主页、app列表页、app介绍详情页、新闻资讯列…

Linux中磁盘的分区,格式化,挂载和文件系统的修复

一.分区工具 1.分区工具介绍 fdisk 2t及以下分区 推荐 (分完区不保存不生效&#xff0c;有反悔的可能) gdisk 全支持 推荐 parted 全支持 不推荐 ( 即时生效&#xff0c;分完立即生效) 2.fdisk 分区,查看磁盘 格式:fdisk -l [磁盘设备] fdisk -l 查看…

网络协议——RSTP(快速生成树)与MSTP(多实例生成树)

一. RSTP 1. STP的不足 1、依靠计时器超时的方式进行收敛导致它的收敛时间需要30到50秒 2、端口状态和端口角色没有细致区分&#xff0c;指导数据转发依靠的不是端口状态而是端口所扮演角色。 3、如果拓扑频繁变化导致用户通信质量差&#xff0c;甚至通信中断&#xf…

排序:冒泡排序,直接插入排序,简单选择排序,希尔排序,快速排序,堆排序,二路归并排序

目录 一.冒泡排序 代码如下 冒泡排序时间复杂度分析 二.直接插入排序 直接插入排序时间复杂度分析 直接插入排序优化&#xff1a;折半插入排序 三.简单选择排序 简单选择排序优化&#xff1a;双向选择排序 选择排序时间复杂度 双向选择排序时间复杂度 四.希尔排序 希…

达梦的归档日志参数ARCH_RESERVE_TIME测试

达梦的参数ARCH_RESERVE_TIME测试 前面有提到和oracle相比&#xff0c;达梦的归档日志相关参数有个比较特别&#xff0c;可以通过设置它去规定归档日志的保留时间。 ARCH_RESERVE_TIME&#xff1a;归档日志保留时间&#xff0c;单位分钟&#xff0c;取值范围 0~2147483647。只…

黄金白银价格上涨是投资机会吗?

黄金和白银&#xff0c;作为历史悠久的贵重金属&#xff0c;一直以来都被投资者视为避险资产。近年来&#xff0c;随着全球经济环境的变动&#xff0c;我们观察到黄金与白银的价格不断攀升&#xff0c;这是否预示着投资机会的到来&#xff1f;今天&#xff0c;就让我们来深度探…

R+VIC模型融合实践技术应用及未来气候变化模型预测

在气候变化问题日益严重的今天&#xff0c;水文模型在防洪规划&#xff0c;未来预测等方面发挥着不可替代的重要作用。目前&#xff0c;无论是工程实践或是科学研究中都存在很多著名的水文模型如SWAT/HSPF/HEC-HMS等。虽然&#xff0c;这些软件有各自的优点&#xff1b;但是&am…

【软考】哈希表

目录 一、概念1.1 定义 二、哈希函数的构造方法2.1 说明2.2 特性 三、处理冲突的方法3.1 说明3.2 开放定址法3.2.1 说明3.2.2 线性探测 3.3 链地址法3.4 再哈希法3.5 建立公共溢出区 四、哈希表的查找4.1 查找过程4.2 查找特点4.3 装填因子 一、概念 1.1 定义 1.一般存储结构由…

centos7部署zabbix6.4.9

文章目录 [toc]一、环境准备1&#xff09;部署lnmp2&#xff09;修改配置文件3&#xff09;安装数据库 二、部署zabbix1&#xff09;下载zabbix2&#xff09;安装zabbix服务端3&#xff09;修改配置4&#xff09;开机启动5&#xff09;安装客户端 三、登录配置1&#xff09;访问…

在Windows电脑上上传iOS应用至App Store

引言 &#x1f4f1; 使用UniApp开发iOS应用十分便捷&#xff0c;一套代码即可兼容多个平台。然而&#xff0c;UniApp开发iOS应用需要进行证书打包和将IPA文件上传至App Store&#xff0c;这两个步骤通常需要在Mac电脑上完成。那么&#xff0c;如果我们使用的是Windows开发环境…

three.js跟着教程实现VR效果(四)

参照教程&#xff1a;https://juejin.cn/post/6973865268426571784&#xff08;作者&#xff1a;大帅老猿&#xff09; 1.WebGD3D引擎 用three.js &#xff08;1&#xff09;使用立方体6面图 camera放到 立方体的中间 like “回” 让贴图向内翻转 &#xff08;2&#xff09;使…

机器学习 —— 使用机器学习进行情感分析 详细介绍版

机器学习 —— 使用机器学习进行情感分析 详细介绍版 机器学习 —— 使用机器学习进行情感分析 演示版 目录 一、 绪论二、 数据处理1. 构建CSV文档2. 构建模型前的思考2.1. 问题2.2. 解决方法 3. 读取数据4. 用正则表达式来进行对特定符号的剔除5. 使用口袋模型进行文本处理和…

大厂面试:找出数组中第k大的数的最佳算法

一.前置条件 假如数组为a,大小为n&#xff0c;要找到数组a中第k大的数。 二.解决方案 1.使用任意一种排序算法&#xff08;例如快速排序&#xff09;将数组a进行从大到小的排序&#xff0c;则第n-k个数即为答案。 2.构造一个长度为k的数组&#xff0c;将前k个数复制过来并降序…

HarmonyOS开发实例:【状态管理】

状态管理 ArkUI开发框架提供了多维度的状态管理机制&#xff0c;和UI相关联的数据&#xff0c;不仅可以在组件内使用&#xff0c;还可以在不同组件层级间传递&#xff0c;比如父子组件之间&#xff0c;爷孙组件之间等&#xff0c;也可以是全局范围内的传递&#xff0c;还可以是…