C语言秘籍(四)

数组

一维数组

前面已经说过变量相当于是一个箱子,那么如果说我想要将一组数据存进箱子中我们不可能将 所有的箱子都命名一次。这时候我们可以用数组来存储这组数据。值得一提的是数组所存储的数据的类型必须是在命名时的类型。相当于找了一个很大的箱子来当做数组在这个很大的数组中间有很多的小格子在这些小格子中可以存储数据,但小格子是药柜这个数组的格子就不能来存储衣服,是衣服这个柜子的格子不能用来储存药品。

该图就是数组在定义之后存储数据的格式。每一个小格子都能够存储数据。(数据是从A[0]开始存储的) 

数组的定义方法 

类型名   变量名[整形常量表达式]

例如 int score[100]定义了100个存储学生成绩的数组。在进行赋值时只能赋值到score[99]因为score数组是从score[0]开始的

数组的初始化

int score[5]={1,,2,3,4,5,6};

还可以加入循环进行赋值。

for(int i=1;i<=7;i++)

{score[i-1]=i;}

这里为什么要用score[i-1]呢?因为我们循环是从i也就是1开始的但是数组是从score[0]开始的所以我们在进行赋值或者是查找等操作时要注意数组的下标

我们也可以不指定数组的大小在进行赋值时直接就会根据赋值的数量选择数组的大小。如

int score[]={1,2,3};

char name[]={"王","李","张"};

那么我们可不可以少于数组的数量呢?

int score[10]={1,2,3};

这样也是可以的。但是不可以超出数组的数量。

int score[3]={1,2,3,4,};

这样在运行的时候就会报错。

二维数组

二位数组的定义与一维数组类似,但赋值上有一点差异;

int score[3][3]={{1,2,3},{2,3,4}{3,4,5}};最终构成的是矩阵。

 所以存储时就是以行列的方式;

二维数组在定义时必须给出列数。

数组常用的操作

数组的删除

数组的删除流程如下

 数组删除演示

数组删除代码:

运行结果:

 

 两个1,第一个是已经进行删除操作的标记。后面几个都是数组元素。

 数组的插入

数组的插入和数组的删除很像,数组插入的流程如下。

数组是先进行数组长度加一因为要先加才能有空间来存放多余的一个元素,而删除是先删然后再减一。

数组插入代码如下:

 

运行结果如下

 

 数组的查询

在上面的两个例子中已经用到了查询;for循环的条件中&&表示与关系必须两个同时发生才行。

所以只要改变for循环中一个条件当a[i]==x(x表示想要查找的元素)然后结束循环打印下标就可知道x的位置。在最后加上一个判断语句如果当i已经遍历完数组还没有找到x时打印数组中没有该元素。代码类似不作表达。

数组的排序

后面数据结构中有堆排序、直接插入排序等。本文主要介绍冒泡排序。冒泡

从前往后(或从后往前)两两比较相邻元素的值,若为逆序(即A[I-1]>A[I]),则交换它们,直到序列比较完。我们称它为第一趟冒泡,结果是将最小的元素交换到待排序列的第一个位置(或将最大的元素交换到待排序列的最后一个位置),关键字最小的元素如气泡一样逐渐向上“漂浮”。最终一个一个排好了位置。

代码如下:

 运行结果如下:

 数组运算基本就是上述几个步骤。有错误的地方烦请指出(本人还处于学习阶段)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值