C语言之数组题

目录

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--;
//	}
//}
//为什么错误❌
//因为一艘进行逆置的时数组里面的元素,两两进行交换实现逆置
//这里的right和left是新的变量,新在栈区创建的空间,交换的是这两个变量。(或许试试指针)
//并不会对数组元素产生什么影响//✔
void reverse(int arr[], int sz)
{int left = 0;//1int right = sz - 1;//5while (left < right){int tmp = 0;tmp = arr[left];arr[left] = arr[right];arr[right] = tmp;left++;right--;}
}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");//初始化数组为0init(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博客icon-default.png?t=N7T8https://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博客icon-default.png?t=N7T8https://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.hqwc.cn/news/92201.html

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

相关文章

自定义spring-boot-start的jar包被引用时,提示找不到bean

类似这个报错&#xff1a; 重点要看一下我们自定义的start包下的config配置 BeanConditionalOnProperty(prefix "file", value "iSenable", havingValue "true")public FileServiceTemplate fileServiceTemplate(){return new FileServiceTe…

app加固怎么做?

app加固是一种保护应用程序免受攻击的技术&#xff0c;可以防止未经授权的访问、数据泄露和其他安全问题。下面是一些app加固的最佳实践&#xff1a; 1.加密和数据保护&#xff1a;对应用程序的数据进行加密和保护&#xff0c;以防止未经授权的访问和数据泄露。您可以使用AES、…

【ES6】—【新特性】—Symbol详情

一、一种新的原始数据类型 定义&#xff1a;独一无二的字符串 二、 声明方式 1. 无描述声明 let s1 Symbol() let s2 Symbol() console.log(s1, s2) // Symbol() Symbol() console.log(s1 s2) // falsePS: Symbol 声明的值是独一无二的 2. 有描述的声明 let s1 Symb…

玩转 PI 系列-看起来像服务器的 ARM 开发板矩阵-Firefly Cluster Server

前言 基于我个人的工作内容和兴趣&#xff0c;想要在家里搞一套服务器集群&#xff0c;用于容器/K8s 等方案的测试验证。 考虑过使用二手服务器&#xff0c;比如 Dell R730, 还搞了一套配置清单&#xff0c;如下&#xff1a; Dell R7303.5 尺寸规格硬盘CPU: 2686v4*2 内存&a…

大语言模型之六- LLM之企业私有化部署

数据安全是每个公司不得不慎重对待的&#xff0c;为了提高生产力&#xff0c;降本增效又不得不接受新技术带来的工具&#xff0c;私有化部署对于公司还是非常有吸引力的。大语言模型这一工具结合公司的数据可以大大提高公司生产率。 私有化LLM需要处理的问题 企业内私有化LLM…

深入解析Kotlin类与对象:构造、伴生、单例全面剖析

前言 本篇文章将带您了解Kotlin编程中的重要概念&#xff1a;类及构造函数、访问修饰符、伴生对象和单例模式。就像搭积木一样&#xff0c;我们会逐步揭开这些概念的面纱&#xff0c;让您轻松理解它们的作用和用法。无论您是编程新手还是有经验的开发者&#xff0c;本文都将为…

GPU编程(基于Python和CUDA)(一)——零基础安装pycuda

系列文章目录 GPU编程&#xff08;基于Python和CUDA&#xff09;&#xff08;一&#xff09;——零基础安装pycuda GPU编程&#xff08;基于Python和CUDA&#xff09;&#xff08;二&#xff09;——显示GPU信息 零基础安装pycuda 系列文章目录前言安装Visual Studio安装C/C环…

【附源码】Python-3.9.5安装教程

软件下载 软件&#xff1a;Python版本&#xff1a;3.9.5语言&#xff1a;英文大小&#xff1a;26.9M安装环境&#xff1a;Win11/Win10/Win8/Win7硬件要求&#xff1a;CPU2.5GHz 内存2G(或更高&#xff09;下载通道①百度网盘丨64位下载链接&#xff1a;https://pan.baidu.com/…

ConsoleApplication17_2项目免杀(Fiber+VEH Hook Load)

加载方式FiberVEH Hook Load Fiber是纤程免杀&#xff0c;VEH是异常报错&#xff0c;hook使用detours来hook VirtualAlloc和sleep&#xff0c;通过异常报错调用实现主动hook 纤程Fiber的概念&#xff1a;纤程是比线程的更小的一个运行单位。可以把一个线程拆分成多个纤程&#…

promethues监控postgres,emqx,redis

一、监控postgres 1、安装监控 docker pull wrouesnel/postgres_exporter2、执行 docker run -d -p 9187:9187 --name postgres_exporter --nethost -d -e DATA_SOURCE_NAME"postgresql://postgres:123456192.168.12.116:5432/rcc-manage?sslmodedisable" wroues…

k8s常见命令

基础知识 1&#xff0c;deployment和pod关系 一个pod里面好几个container&#xff0c;deployment是针对这个pod的配置文件&#xff0c;比如设置这个pod有几个副本 2&#xff0c;ip地址 node有ip&#xff0c;pod也有ip。 node的ip用于集群内部和外部访问&#xff0c;pod用于…

链表OJ练习(1)

一、移除链表元素 本题为力扣原题203 题目介绍&#xff1a; 给你一个链表的头节点 head 和一个整数 val &#xff0c;请你删除链表中所有满足 Node.val val 的节点&#xff0c;并返回 新的头节点 。 列表中的节点数目范围在 0~10000内 1<Node.val<50 0<val<50 …