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

news2024/11/28 4:33:09

        前言

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

        题目描述

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

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

        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)
{
    //注意,这里我们应该先判断之后再置换,不能等到置换结束之后再判断,这样会导致程序bug
	if (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.coloradmin.cn/o/1581954.html

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

相关文章

亿级表优化「TIDB 分区篇」,值得收藏

这是亿级别表优化的第二篇&#xff0c;对第一篇感兴趣的可以看看。 亿级表优化思路之SQL篇 - 掘金 写作背景 距上次写亿级别优化已经有一个多月了&#xff0c;这段时间也没闲着&#xff0c;Q1 对模型做了梳理&#xff0c;重构了这部分业务&#xff0c;主要做了下面这些优化 …

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

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

笔记:[dv-admin开发系列]--2.0版本环境搭建

目录 来源新的改变功能快捷键合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公…

基于51单片机的病床呼叫系统设计与实现Proteus仿真

地址&#xff1a;https://pan.baidu.com/s/1bybQ0wc-FNtkemkFvGotsA 提取码&#xff1a;1234 仿真图&#xff1a; 利用矩阵键盘、蜂鸣器和数码管搭建一个小型病床呼叫系统。用16个按键模拟16个病床的呼叫按钮&#xff0c;当有按键按下时&#xff0c;护士站处由蜂鸣器发出报警声…

广告投放分析

项目背景 Facebook被众多企业作为首选的广告平台之一&#xff0c;特别是在投放原生广告方面。这个平台允许根据如性别、年龄、地理位置和兴趣等多重标准来细化目标用户群。广告主能够制作专门的Facebook广告&#xff0c;并设定一个特定的“受众群体”&#xff0c;便于他们向某些…

django 4.2 自定义signal的使用方法

环境&#xff1a;win11 python3.9.2 django 4.2.11 背景&#xff1a;执行异步数据存储&#xff0c;想要使用该方法实现&#xff08;失败了&#xff09; 时间&#xff1a;20240410 说明&#xff1a;记录一下&#xff0c;避免忘记 1、创建django项目&#xff0c;并实现首页 …

vue点击上传图片并实现图片预览功能,并实现多张图片放到一个数组中进行后端请求(使用原生input)

一、将 File 对象转成 BASE64 字符串 &#xff08;FileReader&#xff09; <template><div><!-- 用来显示封面的图片 --><!-- <img src"/assets/images/cover.jpg" alt"" class"cover-img" ref"imgRef" />…

蓝桥杯嵌入式2023年第十四届省赛主观题解析

1 题目 2 代码 /* Includes ------------------------------------------------------------------*/ #include "main.h" #include "adc.h" #include "rtc.h" #include "tim.h" #include "gpio.h"/* Private includes --…

Leetcode:27.移除元素

题目要求 给你一个数组 nums 和一个值 val&#xff0c;你需要 原地 移除所有数值等于 val 的元素&#xff0c;并返回移除后数组的新长度。 不要使用额外的数组空间&#xff0c;你必须仅使用 O(1) 额外空间并 原地 修改输入数组。 元素的顺序可以改变。你不需要考虑数组中超出…

C语言指针—野指针、指针运算、指针与数组

野指针 指针未初始化 int main(){int *p;//没有初始化&#xff0c;就意味着没有明确的方向//一个局部变量不初始化&#xff0c;放的是随机值:0xCCCCCCCC//请注意&#xff0c;这个地址并不是我们定义的&#xff0c;是一个非法的地址*p 10;//非法访问内存了&#xff0c;这里的…

Unity面经(自整)——移动开发与Shader

Unity与Android混合开发 为什么使用Flutter构建 Flutter 是 Google 的开源工具包&#xff0c;用于从单个代码库为移动、Web、桌面和嵌入式设备构建应用程序&#xff08;一套代码跨平台构建app是它最大的优点&#xff09;&#xff0c;并且可以构建高性能、稳定和丰富UI的应用程…

Spring MVC体系结构和处理请求控制器(一)

一、MVC模式 MVC模式是指Model-View-Controller&#xff08;模型-视图-控制器&#xff09;模式&#xff0c;是开发Web应用程序时常用的一种代码分层模式MVC模式是软件工程中的一种架构模式&#xff0c;会强制行的把系统的输入、处理和输出分开&#xff0c;是系统从功能上形成M…

评论发布完整篇(react版)

此篇文章阐述评论的最新、最热之间的tab标签切换&#xff08;包括当前所在tab标签的高亮显示问题&#xff09;&#xff1b;当前评论的删除&#xff1b;除此之外还延伸了用户的评论实时发布功能。其中最新tab标签所展示的内容是根据当前评论点赞数来进行排序&#xff0c;点赞数量…

数字社会下的智慧公厕:构筑智慧城市的重要组成部分

智慧城市已经成为现代城市发展的趋势&#xff0c;而其中的数字化转型更是推动未来社会治理体系和治理能力现代化的必然要求。在智慧城市建设中&#xff0c;智慧公厕作为一种新形态的信息化公共厕所&#xff0c;扮演着重要角色。本文智慧公厕源头实力厂家广州中期科技有限公司&a…

Go gin框架(详细版)

目录 0. 为什么会有Go 1. 环境搭建 2. 单-请求&&返回-样例 3. RESTful API 3.1 首先什么是RESTful API 3.2 Gin框架支持RESTful API的开发 4. 返回前端代码 go.main index.html 5. 添加静态文件 main.go 改动的地方 index.html 改动的地方 style.css 改动…

C语言 | 字符函数和字符串函数

目录&#xff1a; 1. 字符分类函数 2. 字符转换函数 3. strlen的使用和模拟实现 4. strcpy的使用和模拟实现 5. strcat的使用和模拟实现 6. strcmp的使用和模拟实现 7. strncpy函数的使用 8. strncat函数的使用 9. strncmp函数的使用 10. strstr的使用 11. strtok函…

力扣121. 买卖股票的最佳时机

Problem: 121. 买卖股票的最佳时机 文章目录 题目描述思路复杂度Code 题目描述 思路 1.定义一个int数组max大小同prices&#xff1b;定义int变量curMax初始化为0&#xff1b; 2.从后往前遍历数组&#xff0c;若当前元素prices[i] > curMax时&#xff0c;则使将其赋值给curMa…

医院预约系统微信小程序APP前后端

医院预约系统具体功能介绍&#xff1a;展示信息、可以注册和登录&#xff0c; 预约&#xff08;包含各个科室的预约&#xff0c;可以预约每个各个医生&#xff09;&#xff0c;就诊引导包含预约的具体信息&#xff0c;包含就诊时间、就诊科室、就诊医生以及就诊人信息、和支付状…

如何注册midjourney账号

注册Midjourney账号比较简单&#xff0c;准备好上网工具&#xff0c;进入官网 Midjourney访问地址&#xff1a; https://www.midjourney.com/ 目前没有免费使用额度了&#xff0c;会员最低 10 美元/月&#xff0c;一般建议使用30美元/月的订阅方案。了解如何订阅可以查看订阅…

MyBatis源码介绍

文章目录 MyBatis的核心流程介绍SqlSessionFactory的理解MyBatis中的Executor的源码理解Spring中是如何解决MySQL的SqlSession的线程安全问题MyBatis面向Mapper编程工作原理Mybatis动态sql执行原理Mybatis的一级、二级缓存实现原理Mybatis的插件运行原理以及如何编写一个插件my…