C语言之数组题

news2024/11/28 1:48:42

目录

1.使用函数实现数组操作

2.冒泡排序

3.三子棋

4.【一维数组】交换数组

5.扫雷

6.概念辨析tips


我又来了,今天是数组题,本人还在补军训真的热!🆗

1.使用函数实现数组操作
2.冒泡排序
3.三子棋
4.【一维数组】交换数组
5.扫雷

1.使用函数实现数组操作

//题目1
//创建一个整形数组,完成对数组的操作
//实现函数init() 初始化数组为全0
//实现print()  打印数组的每个元素
//实现reverse()  函数完成数组元素的逆置。
//要求:自己设计以上函数的参数,返回值。
#include<stdio.h>
void print(int arr[], int sz)
{
	int i = 0;
	for (i = 0; i < sz; i++)
	{
		printf("%d ", arr[i]);
	}
}
void init(int arr[],int sz)
{
	int i = 0;
	for (i = 0; i < sz; i++)
	{
		arr[i] = 0;
	}
}
//❌
//void reverse(int arr[], int sz)
//{
//	int left =arr[0];//1
//	int right = arr[sz - 1];//5
//	while (left < right)
//	{
//		int tmp = 0;
//		tmp = left;
//		left = right;
//		right= tmp;
//		left++;
//		right--;
//	}
//}

//✔
void reverse(int arr[], int sz)
{
	int left = 0;//1
	int right = sz - 1;//5
	while (left < right)
	{
		int tmp = 0;
		tmp = arr[left];
		arr[left] = arr[right];
		arr[right] = tmp;
		left++;
		right--;
	}
}

//数组元素+1
//下标+1
//why?????????

int main()
{
	int arr[5] = { 1,2,3,4,5 };
	int sz = sizeof(arr) / sizeof(arr[0]);
	print(arr,sz);
	printf("\n");
	//数组全部逆置
	reverse(arr, sz);
	print(arr, sz);
	printf("\n");
	//初始化数组为0
	init(arr,sz);
	print(arr, sz);
	printf("\n");
	return 0;
}

2.冒泡排序

//题目2
//实现一个对整形数组的冒泡排序
/*
思路:
遍历数组,对数组中相邻的两个元素进行比较,如果需要升序,
前一个数据大于后一个数据时,交换两个位置上的数据,直到所有的数据比较完,
此时,最大的数据已经放在数组的末尾。
除最大数据已经排好序外,其余数据还是无需,对剩余数据采用与上述类似的方式进行处理即可
*/
#include<stdio.h>
int main()
{
	int arr[10] = { 10,9,8,7,6,5,4,3,2,1 };
	int sz = sizeof(arr) / sizeof(arr[0]);
	int i = 0;
	int j = 0;
	for (j = 0; j < sz - 1; j++)//趟数
	{
		for (i = 0; i < sz - 1 - i; i++)//每趟次数
		{
			if (arr[i] < arr[i + 1])
			{
				int tmp = 0;
				tmp = arr[i];
				arr[i] = arr[i + 1];
				arr[i + 1] = tmp;
			}
		}
	}
	for (i = 0; i < sz ; i++)
	{
		printf("%d ", arr[i]);
	}
	return 0;
}

3.三子棋

C语言之三子棋游戏实现篇_唐棣棣的博客-CSDN博客https://blog.csdn.net/m0_74841364/article/details/132018375?spm=1001.2014.3001.5501

4.【一维数组】交换数组

//题目6
//将数组A中的内容和数组B中的内容进行交换。(数组一样大)

//注意
//交换数组不能将数组名交换即可
//交换数组必须是一对一对的交换
#include<stdio.h>
void change(int arr1[], int arr2[],int sz)
{
	int i = 0;
	for (i = 0; i < sz; i++)
	{
		int tmp = 0;
		tmp = arr1[i];
		arr1[i] = arr2[i];
		arr2[i] = tmp;
	}
}
int main()
{
	int arr1[] = { 1,2,3,4,5 };
	int arr2[] = { 6,7,8,9,10 };
	int sz = sizeof(arr1) / sizeof(arr1[0]);
	change(arr1, arr2,sz);
	int i = 0;
	for (i = 0; i < sz; i++)
	{
		printf("%d ", arr1[i]);
	}
	printf("\n");
	for (i = 0; i < sz; i++)
	{
		printf("%d ", arr2[i]);
	}
	return 0;
}

5.扫雷

C语言之扫雷游戏实现篇_唐棣棣的博客-CSDN博客https://blog.csdn.net/m0_74841364/article/details/132018322?spm=1001.2014.3001.5501

6.概念辨析tips

  • 数组的初始化不能使用(),只能使用{ }
  • 数组是相同类型的一段连续的空间。
  • 数组下标是从0开始的,比如:int array[N],下标的范围为[0,N)其中N位置不能存储有效元素即[0,N-1]。数组不能越界。
  • int arr[] = {1,2,(3,4),5};里面总共有4个元素,(3,4)为逗号表达式,取后者4,因此数组中元素分别为1,2,4,5。
  • 数组的下标是从0开始的。
  • 数组在内存中是连续存放的。
  • 数组名既可以表示数组的地址(sizeof  /  &),也可以表示数组首元素的地址,虽然两个在数值上一样的,但是含义不一样。
  • 这个要是系统而定,随着数组下标的由小到大,地址由低到高。
  • 对于二维数组int array[M][N],说明如下:
  1.  M和N都必须为常数
  2.  M代表数组有M行,N代表每行中有N个元素
  3.  其中M可以省略,省略后必须给出初始化表达式,编译器从初始化结果中推断数组有多少
  4.  N一定不能省略,因为N省略了就不能确定一行有多少个元素,也不能确定数组有多少行
  • 二维数组int a[2][3]={1,2,3,4,5,6};

  •  关于sizeof vs strlen
#include<stdio.h>
int main()
{
	char acX[] = "abcdefg";
	char acY[] = { 'a','b','c','d','e','f','g' };
	printf("sizeof=%d sizeof=%d\n", sizeof(acX), sizeof(acY));
	printf("strlen=%d strlen=%d\n", strlen(acX), strlen(acY));
	return 0;
}

  •  sizeof
  1. sizeof是操作符。
  2. sizeof计算的占用内存的大小,单位是字节。
  3. 计算字符串包括\0和\0之前的出现的字符个数。
  4. 计算字符字符的个数
  5. sizeof计算的对象是什么类型都行
  • strlen
  1. strlen是库函数。
  2. strlen是统计字符串长度的。
  3. strlen遇到\0才停止计算。
  4. strlen只能针对字符串,计算字符串不包括\0
  5. strlen计算字符时,遇不到\0,所以随机值
  • acX和acY都是字符数组,但是初始化表达式不同,acX和acY的区别如下:
  1. acX:数组中总共有8个元素,分别是:'a','b','c','d','e','f','g','\0'
  2. acY:数组中总共有7个元素,分别是:'a','b','c','d','e','f','g'
  3. sizeof这里求的是数组大小,数组大小等于有效元素个数*每个元素的大小。sizeof(acX) = 8,sizeof(acY) = 7
  4. strlen求的是字符串长度,从首元素开始计算,遇见‘\0’停止,由于acY数组没有'\0‘,所以strlen(acY)的结果是个随机值

关于以上练习题,大家可以动手写一写。🙂🙂🙂

✔✔✔✔✔感谢大家的阅读,若有错误和不足,欢迎指正!

代码----------→【gitee:唐棣棣 (TSQXG) - Gitee.com】

联系----------→【邮箱:2784139418@qq.com】

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

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

相关文章

Python自动化测试之线上流量回放:录制、打标、压测与平台选择

在自动化测试中&#xff0c;线上流量回放是一项关键技术&#xff0c;可以模拟真实用户的请求并重现线上场景&#xff0c;验证系统的性能和稳定性。本文将介绍Python自动化测试中的线上流量回放技术&#xff0c;并提供实战代码&#xff0c;帮助你了解流量的录制、打标、压测发起…

Ubuntu安装JDK8(直接下载jdk压缩包方式)

1.官网下载JDK 地址: https://www.oracle.com/java/technologies/downloads/ 选择相应的 .gz包下载 2.解压缩,放到指定目录 创建目录: sudo mkdir /usr/lib/jvm 解压缩到该目录: sudo tar -zxvf jdk-8u381-linux-x64.tar.gz -C /usr/lib/jvm 3.配置环境变量 sudo vim ~/.ba…

跨专业申请成功|金融公司经理赴美国密苏里大学访学交流

J经理所学专业与从事工作不符&#xff0c;尽管如此&#xff0c;我们还是为其成功申请到美国密苏里大学经济学专业的访问学者职位&#xff0c;全家顺利过签出国。 J经理背景&#xff1a; 申请类型&#xff1a; 自费访问学者 工作背景&#xff1a; 某金融公司经理 教育背景&am…

YUV数据图形化理解

以下为音视频基础数据的图像化展示&#xff0c;方便大家理解 RGB24 RGB交替排列&#xff0c;RGBRGBRGB 占用空间Width*Height*3 YUV420P YU12(I420) 每4个Y分量&#xff0c;共一个UV分量 Y是连续的&#xff0c;U也是连续的&#xff0c;V也是连续的 占用空间 Width*Height …

北京筑龙受邀出席中物联“采购供应链中国行—走进雄安”活动

日前&#xff0c;“采购供应链中国行—走进雄安”活动在河北雄安新区成功举办&#xff0c;来自30家相关单位的50余名领导和代表参加了本次活动。活动由中国物流与采购联合会公共采购分会主办&#xff0c;中国物流与采购联合会采购委、中国雄安集团有限公司、河北雄安新区招标投…

【Apollo】阿波罗自动驾驶系统:驶向未来的智能出行(含源码安装)

前言 Apollo (阿波罗)是一个开放的、完整的、安全的平台&#xff0c;将帮助汽车行业及自动驾驶领域的合作伙伴结合车辆和硬件系统&#xff0c;快速搭建一套属于自己的自动驾驶系统。 开放能力、共享资源、加速创新、持续共赢是 Apollo 开放平台的口号。百度把自己所拥有的强大、…

VMware 助力企业轻松驾驭生成式 AI 的力量

在 8 月 23 日的 VMware Explore 2023 大会上&#xff0c;VMware&#xff08;NYSE&#xff1a;VMW&#xff09;推出全新 Private AI 产品&#xff0c;助力企业采用生成式 AI 并挖掘可信数据的价值。Private AI 是一种架构方案&#xff0c;可解锁 AI 商业效益并满足企业实际隐私…

【实用黑科技】息声后的元宇宙踪迹——“创世界社区“,普通人构建游戏世界将会越来越容易

在这里插入图片描述 &#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于…

基于Java swing和mysql实现学生信息管理系统(源码+数据库+运行指导视频)

一、项目简介 本项目是一套基于Java swing和mysql实现学生信息管理系统&#xff0c;主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的Java学习者。 包含&#xff1a;项目源码、项目文档、数据库脚本等&#xff0c;该项目附带全部源码可作为毕设使用。 项目都经过…

Nginx+Tomcat的动静分离与负载均衡

目录 前言 一、案例 二、Nginx的高级用法 三、tomcat部署 四、Nginx部署 五、测试 总结 前言 通常情况下&#xff0c;一个 Tomcat 站点由于可能出现单点故障及无法应付过多客户复杂多样的请求等情况&#xff0c;不能单独应用于生产环境下&#xff0c;所以我们需要一套更…

展会动态 | 迪捷软件邀您参加【AUTOSEMO“恒以致远,共创共赢”主题研讨会】

大会简介 2023年&#xff0c;中国汽车工业迎来70年华诞&#xff0c;仅用70年&#xff0c;中国就已建成全球规模最大、品类最齐全、配套最完整的汽车工业体系。 中国汽车工业协会软件分会中国汽车基础软件生态标准专委会&#xff08;China Automotive Basic Software Ecosyste…

FusionAD:用于自动驾驶预测和规划任务的多模态融合

论文背景 自动驾驶&#xff08;AD&#xff09;任务通常分为感知、预测和规划。在传统范式中&#xff0c;AD中的每个学习模块分别使用自己的主干&#xff0c;独立地学习任务。 以前&#xff0c;基于端到端学习的方法通常基于透视视图相机和激光雷达信息直接输出控制命令或轨迹…

19- 富文本tinymce 和 二进制模型BLOB(表情存储)

富文本tinymce 中文文档: TinyMCE中文文档中文手册 (1). 下载(5.2.2版本) -> 解压放到 static 文件下 (2). static / js / tiny.js 设置富文本 二进制模型BLOB(表情存储) (1). 定义模型类型 # 两种方式: # 1. 定义模型类为Text,直接修改数据库类型为BLOBcontent db.Colum…

KalmanFilter卡尔曼滤波

预测&#xff08;prediction&#xff09; 状态变量 x k A x k − 1 B u k − 1 w k − 1 x_k Ax_{k-1} Bu_{k-1} w_{k-1} xk​Axk−1​Buk−1​wk−1​ 其中n维向量 x k x_k xk​为k时刻的系统状态变量&#xff0c;n维向量 x k − 1 x_{k−1} xk−1​是k-1时刻的系统状…

Docker容器学习:搭建私有镜像仓库Harbor操作

目录 系统环境&#xff1a; 安装Docker-Compose 下载并安装Harber 启动Harbor 使用Harbor 上传下载镜像到harbor仓库 系统环境&#xff1a; Centos7.9Docker-ce:24 安装Docker-Compose curl -L "https://github.com/docker/compose/releases/download/v2.20.3/do…

【JUC系列-03】熟练掌握Atomic原子系列基本使用

JUC系列整体栏目 内容链接地址【一】深入理解JMM内存模型的底层实现原理https://zhenghuisheng.blog.csdn.net/article/details/132400429【二】深入理解CAS底层原理和基本使用https://blog.csdn.net/zhenghuishengq/article/details/132478786【三】熟练掌握Atomic原子系列基本…

Gossip协议

Gossip协议 一、Gossip协议1.1 工作原理1.2 Gossip优点1.3 Gossip传播方式1.3.1 Anti-Entropy&#xff08;反熵&#xff09;1.3.2 Rumor-Mongering&#xff08;谣言传播&#xff09;1.3.3 结合 1.4 Gossip协议的通信方式1.4.1 Push1.4.2 Pull1.4.3 Push&Pull 二、手撸简易版…

媒介盒子:医疗软文怎么写才能实现营销效果?

随着互联网的快速发展,医疗行业也逐渐意识到了网络营销的重要性。而作为网络营销的一种形式,医疗软文在传播医疗知识、宣传医疗品牌方面具有独特的优势。本文将从选题、内容、形式等多个方面进行探讨&#xff0c;如何写一篇有效的医疗营销软文&#xff1f; 1、选题非常关键 首…

Python“牵手”天猫商品列表数据,关键词搜索天猫API接口数据,天猫API接口申请指南

天猫平台API接口是为开发电商类应用程序而设计的一套完整的、跨浏览器、跨平台的接口规范&#xff0c;天猫API接口是指通过编程的方式&#xff0c;让开发者能够通过HTTP协议直接访问天猫平台的数据&#xff0c;包括商品信息、店铺信息、物流信息等&#xff0c;从而实现天猫平台…