C语言:使用函数完成整型数组的打印、元素逆置、初始化

news2024/11/22 22:24:37

题目:

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

             

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

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

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

                

要求:自己设计以上函数的参数,返回值。

                    

 =========================================================================

                       

思路:

总体思路:

(一). 实现 函数init() -- 初始化数组为全0

                  

(二). 实现 函数print() -- 打印数组的每个元素

                  

(三). 实现 函数reverse() -- 函数完成数组元素的逆置

                     

(四). 完成 主函数 的编写 -- 测试这三个函数

                


                 

第一步:

实现 函数print() -- 打印数组的每个元素

              

(1). 函数参数

int* arr -- 数组首地址

int sz -- 数组元素个数

                

(2). 使用for循环以及首元素地址,进行循环打印

              

(3). 进行换行

                     

实现代码:

#include <stdio.h>
//实现 函数print() -- 打印数组的每个元素
void print(int* arr, int sz)
{
	int j = 0;
	//使用for循环以及首元素地址,进行循环打印
	for (j = 0; j < sz; j++)
	{
		printf("%d ", arr[j]);
	}

	//进行换行
	printf("\n");
}

int main()
{

	return 0;
}

实现图片:

                  


                 

第二步:

实现 函数reverse() -- 函数完成数组元素的逆置

(1). 函数参数

int* arr -- 数组首地址

int sz -- 数组元素个数

              

(2). 使用for循环循环进行逆置,一次逆置两个元素,所以需要逆置 sz / 2

                     

(3). 进行逆置,使用左右指针进行逆置

int* left = arr + i; -- 左指针

int* right = arr + sz -1 - i; -- 右指针

                     

实现代码:

#include <stdio.h>
//实现 函数print() -- 打印数组的每个元素
void print(int* arr, int sz)
{
	int j = 0;
	//使用for循环以及首元素地址,进行循环打印
	for (j = 0; j < sz; j++)
	{
		printf("%d ", arr[j]);
	}

	//进行换行
	printf("\n");
}

//实现 函数reverse() -- 函数完成数组元素的逆置
void reverse(int* arr, int sz)
{
	int i = 0;
	for (i = 0; i < (sz / 2); i++)
		//6个元素调3次,5个元素调2次
	{
		//使用指针移位,类似下标,易混淆,
		//让左右指针慢慢往中间靠
		int* left = arr + i;
		int* right = arr + sz - 1 - i;
	
		//进行逆置:
		int tmp = *left;
		*left = *right;
		*right = tmp;
		//获取指针值是用 取地址符:*
	}
}

int main()
{

	return 0;
}

实现图片:

                  


                 

第三步:

实现 函数init() -- 初始化数组为全0

(1). 函数参数

int* arr -- 数组首地址

int sz -- 数组元素个数

               

(2). 使用for循环以及首元素地址,循环将各个元素赋值为0

                     

实现代码:

#include <stdio.h>
//实现 函数print() -- 打印数组的每个元素
void print(int* arr, int sz)
{
	int j = 0;
	//使用for循环以及首元素地址,进行循环打印
	for (j = 0; j < sz; j++)
	{
		printf("%d ", arr[j]);
	}

	//进行换行
	printf("\n");
}

//实现 函数reverse() -- 函数完成数组元素的逆置
void reverse(int* arr, int sz)
{
	int i = 0;
	for (i = 0; i < (sz / 2); i++)
		//6个元素调3次,5个元素调2次
	{
		//使用指针移位,类似下标,易混淆,
		//让左右指针慢慢往中间靠
		int* left = arr + i;
		int* right = arr + sz - 1 - i;
	
		//进行逆置:
		int tmp = *left;
		*left = *right;
		*right = tmp;
		//获取指针值是用 取地址符:*
	}
}

//实现 函数init() -- 初始化数组为全0
void init(int* arr, int sz)
{
	//arr:首元素地址 ;sz为几就循环几次
	int i = 0;
	for (i = 0; i < sz; i++)
	{
		int* tmp = arr + i; //创建指针变量存放指针
		*tmp = 0; //将指针中的值赋为0
	}
}

int main()
{

	return 0;
}

实现图片:

                 


                 

第四步:

完成 主函数 的编写 -- 测试这三个函数

(1). 给出要进行操作的数组 -- arr

             

(2). 求出数组元素个数

                 

(3). 测试三个函数

                     

实现代码:

#include <stdio.h>
//实现 函数print() -- 打印数组的每个元素
void print(int* arr, int sz)
{
	int j = 0;
	//使用for循环以及首元素地址,进行循环打印
	for (j = 0; j < sz; j++)
	{
		printf("%d ", arr[j]);
	}

	//进行换行
	printf("\n");
}

//实现 函数reverse() -- 函数完成数组元素的逆置
void reverse(int* arr, int sz)
{
	int i = 0;
	for (i = 0; i < (sz / 2); i++)
		//6个元素调3次,5个元素调2次
	{
		//使用指针移位,类似下标,易混淆,
		//让左右指针慢慢往中间靠
		int* left = arr + i;
		int* right = arr + sz - 1 - i;
	
		//进行逆置:
		int tmp = *left;
		*left = *right;
		*right = tmp;
		//获取指针值是用 取地址符:*
	}
}

//实现 函数init() -- 初始化数组为全0
void init(int* arr, int sz)
{
	//arr:首元素地址 ;sz为几就循环几次
	int i = 0;
	for (i = 0; i < sz; i++)
	{
		int* tmp = arr + i; //创建指针变量存放指针
		*tmp = 0; //将指针中的值赋为0
	}
}

int main()
{
	//给出要进行操作的数组 -- arr
	int arr[5] = { 1,2,3,4,5 };

	//求出数组元素个数
	int sz = sizeof(arr) / sizeof(arr[0]);

	//测试三个函数
	print(arr, sz);//实现print(),打印数组的每个元素

	reverse(arr, sz);//实现reverse(),完成数组元素的逆置
	print(arr, sz);//打印查看逆置后结果

	init(arr, sz);//实现函数init(),初始化数组为全0
	print(arr, sz);//打印查看初始化后结果

	return 0;
}

实现图片:

                    

最终代码和实现效果

最终代码:

#include <stdio.h>
//实现 函数print() -- 打印数组的每个元素
void print(int* arr, int sz)
{
	int j = 0;
	//使用for循环以及首元素地址,进行循环打印
	for (j = 0; j < sz; j++)
	{
		printf("%d ", arr[j]);
	}

	//进行换行
	printf("\n");
}

//实现 函数reverse() -- 函数完成数组元素的逆置
void reverse(int* arr, int sz)
{
	int i = 0;
	for (i = 0; i < (sz / 2); i++)
		//6个元素调3次,5个元素调2次
	{
		//使用指针移位,类似下标,易混淆,
		//让左右指针慢慢往中间靠
		int* left = arr + i;
		int* right = arr + sz - 1 - i;
	
		//进行逆置:
		int tmp = *left;
		*left = *right;
		*right = tmp;
		//获取指针值是用 取地址符:*
	}
}

//实现 函数init() -- 初始化数组为全0
void init(int* arr, int sz)
{
	//arr:首元素地址 ;sz为几就循环几次
	int i = 0;
	for (i = 0; i < sz; i++)
	{
		int* tmp = arr + i; //创建指针变量存放指针
		*tmp = 0; //将指针中的值赋为0
	}
}

int main()
{
	//给出要进行操作的数组 -- arr
	int arr[5] = { 1,2,3,4,5 };

	//求出数组元素个数
	int sz = sizeof(arr) / sizeof(arr[0]);

	//测试三个函数
	print(arr, sz);//实现print(),打印数组的每个元素

	reverse(arr, sz);//实现reverse(),完成数组元素的逆置
	print(arr, sz);//打印查看逆置后结果

	init(arr, sz);//实现函数init(),初始化数组为全0
	print(arr, sz);//打印查看初始化后结果

	return 0;
}

实现效果:

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

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

相关文章

AB32VG1:SDK_AB53XX_V061(4)蓝牙音频测试笔记

文章目录 1. 淘宝上两种开发板&#xff0c;有一种的蓝牙功能不正常2. 蓝牙音频测试2.1 《config.h》和《Boombox.setting》两个配置以哪个为准2.2 codeblocks更换链接库2.2.1 这样进入build options是错的2.2.2 build options正确打开方式 2.3.编译工程&#xff0c;下载运行2.3…

kafka 报错 - Cannot assign requested address

背景 在华为云服务器上跑了 zookeeper 和 kafka 的 broker&#xff0c;想内外网分流&#xff0c;重点就是做不到从外网去消费&#xff0c;比如用自己的 windows 笔记本去消费。 配置 server.properties 的 listener 为 broker 所在机子的的内网 IP 后&#xff0c;终于能 star…

Scala环境搭建及安装

salca环境搭建 由于scala是基于java来开发的, 编写的java类可以使用javac命令编译成.class文件被JVM加载到内存中执行 ! 那么scala可以通过scalac命令将编写的scala文件编译成.class文件一样被JVM加载到内存中,因此Scala是运行在JVM平台上的&#xff0c;所以安装Scala之前要安装…

【SpringBoot实战专题】「开发实战系列」全方位攻克你的技术盲区之SpringBoot整合众多日志管理系统服务starter-logging

全方位攻克你的技术盲区之SpringBoot整合众多日志管理系统服务starter-logging 前提介绍Spring默认日志文件Spring的日志配置参数logging.levelmaven配置properties文件yaml文件 logging.fileapplication.yml中配置 logging.pathapplication.properties配置application.yml配置…

基于DBACAN的道路轨迹点聚类

目录 前言道路栅格化轨迹聚类参考资料 前言 很多针对道路轨迹的挖掘项目前期都需要对道路进行一段一段的分割成路段&#xff0c;然后对每一个路段来单独进行考察&#xff0c;如设定路段限速标识&#xff0c;超速概率等&#xff0c;如何对道路进行划分&#xff0c;其实是一个很…

华为OD机试真题 JavaScript 实现【滑动窗口】【2023 B卷 100分】,附详细解题思路

一、题目描述 有一个N个整数的数组&#xff0c;和一个长度为M的窗口&#xff0c;窗口从数组内的第一个数开始滑动直到窗口不能滑动为止&#xff0c;每次窗口滑动产生一个窗口和&#xff08;窗口内所有数和和&#xff09;&#xff0c;求窗口滑动产生的所有窗口和的最大值。 二…

python: read excel

""" Insurance。py edit&#xff1a; geovindu,Geovin Du,涂聚文 date 2023-06-13 保险类 """import sys import osclass Insurance:"""保险类"""def __init__(self, InsuranceName, InsuranceCost, IMonth):&quo…

STM32使用QUADSPI读写外部Nor Flash(以W25Q64为例)

使用QUADSPI读写W25Q64 QUADSPI介绍硬件连接双闪存模式禁止双闪存模式使能 QUADSPI命令序列指令阶段地址阶段交替字节阶段空指令周期阶段数据阶段 QUADSPI主要信号接口协议模式单线SPI模式双线SPI模式四线SPI模式 使用QUADSPI操作W25Q64发送命令函数状态轮询函数读ID函数QUADSP…

应用案例 | FG-200:通过Modbus将FF H1设备集成到DCS系统

一 背景 FOUNDATION Fieldbus&#xff08;FF&#xff09;协议是一种现代化的数字通信协议&#xff0c;其中FF H1协议在大型的化工、电力、石油等流程工业领域得到了广泛应用。由于FF H1协议具有诸多优势&#xff0c;例如高度可靠性、高速数据传输、强大的诊断能力和灵活的设备…

第4章 总体设计

文章目录 第5章 总体设计5.1 设计过程例题 5.2 设计原理5.2.1 模块化模块化的优势 例题5.2.2 抽象5.2.3 逐步求精求精实际上是细化的过程与抽象的关系 5.2.4 信息隐藏和局部化5.2.5 模块独立模块独立的重要性模块独立的定性标准度量耦合① 无直接耦合② 数据耦合③ 标记耦合④ …

MySQL数据库基础 11

第十一章 数据处理之增删改 1. 插入数据1.1 实际问题1.2 方式1&#xff1a;VALUES的方式添加1.3 方式2&#xff1a;将查询结果插入到表中 2. 更新数据3. 删除数据4. MySQL8新特性&#xff1a;计算列 1. 插入数据 1.1 实际问题 解决方式&#xff1a;使用 INSERT 语句向表中插入…

8.1 正弦波振荡电路(2)

四、石英晶体正弦波振荡电路 石英晶体谐振器&#xff0c;简称石英晶体&#xff0c;具有非常稳定的固有频率。对于振荡频率稳定性要求高的电路&#xff0c;应选用石英晶体作选频网络。 1、石英晶体的特点 将二氧化硅&#xff08; SiO 2 \,\textrm {SiO}_2\, SiO2​&#xff0…

华为OD机试真题 JavaScript 实现【找终点】【2023 B卷 100分】,附详细解题思路

一、题目描述 给定一个正整数数组&#xff0c;设为nums&#xff0c;最大为100个成员&#xff0c;求从第一个成员开始&#xff0c;正好走到数组最后一个成员&#xff0c;所使用的最少步骤数。 要求&#xff1a; 第一步必须从第一元素开始&#xff0c;且1 < 第一步的步长 &…

测试 4 年,从外包 15K 跳槽去字节 38K+12,啃完这份笔记你也可以

粉丝小王转行做测试已经是第4个年头&#xff0c;一直是一个不温不火的小职员&#xff0c;本本分分做着自己的事情&#xff0c;觉得自己的工作已经遇到了瓶颈&#xff0c;一个偶然的机会&#xff0c;获得了一份软件测试全栈知识点学习笔记&#xff0c;通过几个月的学习&#xff…

虚拟机(VMware )部署

一、VMware 概述&#xff1a; VMware是一家提供虚拟化解决方案的领先公司&#xff0c;其产品被广泛应用于企业和个人用户的计算环境中。VMware的虚拟化技术可以将物理计算资源&#xff08;如服务器、存储和网络&#xff09;抽象成虚拟化的资源&#xff0c;从而提供更高的灵活性…

路径规划算法:基于黑猩猩优化的路径规划算法- 附代码

路径规划算法&#xff1a;基于黑猩猩优化的路径规划算法- 附代码 文章目录 路径规划算法&#xff1a;基于黑猩猩优化的路径规划算法- 附代码1.算法原理1.1 环境设定1.2 约束条件1.3 适应度函数 2.算法结果3.MATLAB代码4.参考文献 摘要&#xff1a;本文主要介绍利用智能优化算法…

MySQL之流程控制,索引

一、条件语句 if 条件语句 delimiter // CREATE PROCEDURE proc_if () BEGINdeclare i int default 0;if i 1 THENSELECT 1;ELSEIF i 2 THENSELECT 2;ELSESELECT 7;END IF;END // delimiter ; 二、循环语句 while循环 delimiter // CREATE PROCEDURE proc_while () BEGI…

测试用例设计背后的底层逻辑你一定不知道

目录 前言 1、万物皆可测 2、用例的本质 3、业务建模 4、其他一些测试法 总结&#xff1a; 前言 测试用例是每位测试人员都绕不开的话题&#xff0c;也是大家习以为常的事情。几乎所有测试相关的公众号、博客、专栏&#xff0c;都会提及测试用例&#xff0c;由此可见它的…

华为OD机试真题 JavaScript 实现【矩阵稀疏扫描】【2023 B卷 100分】,附详细解题思路

一、题目描述 如果矩阵中的许多系数都为零&#xff0c;那么该矩阵就是稀疏的。对稀疏现象有兴趣是因为它的开发可以带来巨大的计算节省&#xff0c;并且在许多大的实践中都会出现矩阵稀疏的问题。 给定一个矩阵&#xff0c;现在需要逐行和逐列地扫描矩阵&#xff0c;如果某一…