好文档 - 专业文书写作范文服务资料分享网站

第5章 数组C语言教程零基础到大神

天下 分享 时间: 加入收藏 我要投稿 点赞

第5章 数组

学习目标

? 掌握数组的概念 ? 掌握一维数组的使用 ? 掌握二维数组的使用

在前面所学的章节中,所使用的数据都属于基本数据类型,除此之外,C语言还提供了构造类型的数据,构造类型的数据包括数组类型、结构体类型和共用体类型。本章就针对其中的数组类型进行讲解。

5.1 什么是数组

在程序中,经常需要对一批数据进行操作,例如,统计某个公司100个员工的平均工资。如果使用变量来存放这些数据,就需要定义100个变量,显然这样做很麻烦,而且很容易出错。这时,可以使用x[0]、x[1]、x[2]……x[99]表示这100个变量,并通过方括号中的数字来对这100个变量进行区分。

在程序设计中,使用x[0]、x[1]、x[2]……x[n]表示的一组具有相同数据类型的变量集合称为数组x,数组中的每一项称为数组的元素,每个元素都有对应的下标(n),用于表示元素在数组中的位置序号,该下标是从0开始的。

为了大家更好地理解数组,接下来,通过一张图来描述数组x[10]的元素分配情况,如图5-1所示。

X[0]X[1]X[2]X[3]X[4]X[5]X[6]X[7]X[8]X[9] 图5-1 数组x[10]

从图5-1中可以看出,数组x包含10个元素,并且这些元素是按照下标的顺序进行排列的。由于数组元素的下标是从0开始的,因此,数组x的最后一个元素为x[9]。

需要注意的是,根据数据的复杂度,数组下标的个数是不确定的。通常情况下,数组元素下标的个数也称为维数,根据维数的不同,可将数组分为一维数组、二维数组、三维数组、四维数组等。通常情况下,我们将二维及以上的数组称为多维数组。

5.2 一维数组

5.2.1 一维数组的定义与初始化

一维数组指的是只有一个下标的数组,它用来表示一组具有相同类型的数据。在C语言中,一维数组的定义方式如下所示:

类型说明符 数组名[常量表达式];

在上述语法格式中,类型说明符表示数组中所有元素的类型,常量表达式指的是数组的长度,也就是

1

数组中存放元素的个数。

例如:

int array[5];

第5章 数组

上述代码定义了一个数组,其中,int是数组的类型,array是数组的名称,方括号中的5是数组的长度。

完成数组的定义后,只是对数组中的元素开辟了一块内存空间。这时,如果想使用数组操作数据,还需要对数组进行初始化。数组初始化的常见的方式有三种,具体如下:

1、直接对数组中的所有元素赋值,示例代码如下:

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

上述代码定义了一个长度为5的数组i,并且数组中元素的值依次为1、2、3、4、5。 2、只对数组中的一部分元素赋值,示例代码如下:

int i[5]={1,2,3};

在上述代码中,定义了一个int类型的数组,但在初始化时,只对数组中的前三个元素进行了赋值,其它元素的值会被默认设置为0。

3、对数组全部元素赋值,但不指定长度,示例代码如下:

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

在上述代码中,数组i中的元素有4个,系统会根据给定初始化元素的个数定义数组的长度,因此,数组i的长度为4。

注意:

1、数组的下标是用方括号括起来的,而不是圆括号。 2、数组名的命名同变量名的命名规则相同。

3、数组定义中,常量表达式的值可以是符号常量,例如下面的定义是合法的。

int a[N]; //假设预编译命令#define N 4, 下标是符号常量

5.2.2 一维数组的引用

在程序中,经常需要访问数组中的一些元素,这时可以通过数组名和下标来引用数组中的元素。一维数组元素的引用方式如下所示:

数组名[下标];

在上述方式中,下标指的是数组元素的位置,数组元素的下标是从0开始的。例如,引用数组x的第三个元素的方式x[2]。

为了帮助大家更好地理解数组元素的引用,接下来通过一个案例来演示,如例5-1所示。 例5-1

1 #include

2 void main(int argc,char *argv[]) 3 { 4 5 6 7 8 9

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

for ( i= 0; i < 5; i++) { }

printf(\

2

10 }

运行结果如图5-2所示。

图5-2 运行结果

在例5-1中,首先定义了一个数组x,然后通过下标的形式获取到数组中的元素,最后将元素乘以2后输出。

注意:

数组的下标都有一个范围,即“0~[数组长度-1]”,假设数组的长度为6,其下标范围为0~5。当访问数组中的元素时,下标不能超出这个范围,否则程序会报错。

5.2.3 一维数组的常见操作

数组在编写程序时应用非常广泛,如经常需要对数组进行遍历、获取最值、排序等操作,灵活地使用数组对实际开发很重要。接下来针对一维数组的常见操作进行详细地讲解,具体如下:

1、一维数组的遍历

在操作数组时,经常需要依次访问数组中的每个元素,这种操作称作数组的遍历。接下来使用for循环依次遍历数组中的元素,如例5-2所示。

例5-2

1 #include

2 void main(int argc, char* argv[]) 3 { 4 5 6 7 8 9 10 }

int x[5] = { 1, 2, 3, 4, 5 }; int i = 0;

for (i = 0; i < 5; i++) { }

printf(\

运行结果如图5-3所示。

图5-3 运行结果

在例5-2中,首先定义了一个长度为5的数组x,然后定义了一个变量i,由于数组的下标范围为0~4,

3

第5章 数组

因此可以将i的值作为下标,依次去访问数组中的元素,并将元素的值输出。

2、一维数组的最值

在操作数组时,经常需要获取数组中元素的最值。接下来通过一个案例来演示如何获得数组中的最大值,如例5-3所示。

例5-3

1 #include

2 int main(int argc, char* argv[]) 3 { 4 5 6 7 8 9 10 11 12 13 14 15 16 }

int x[5] = {1,2,3,4,5}; int nMax = x[0]; int i = 0;

for (i = 1; i < 5; i++) { }

printf(\return 0;

if (x[i] > nMax) { }

nMax = x[i];

运行结果如图5-4所示。

图5-4 运行结果

在例5-3中,实现了获取数组x最大值的功能。在第7行代码中假定数组中的第一个元素为最大值,并将其赋值给nMax,在第7~13行代码对数组中的其他元素进行遍历,如果发现比nMax值大的元素,就将最大值nMax设置为这个元素的值,这样,当数组遍历完成后,nMax中存储的就是数组中的最大值

3、一维数组的排序

在操作数组时,经常需要对数组中的元素进行排序。接下来为大家介绍一种比较常见的排序算法—冒泡排序。在冒泡排序的过程中,不断地比较数组中相邻的两个元素,较小者向上浮,较大者往下沉,整个过程和水中气泡上升的原理相似,接下来,分步骤讲解冒泡排序的整个过程,具体如下:

第一步,从第一个元素开始,将相邻的两个元素依次进行比较,直到最后两个元素完成比较。如果前一个元素比后一个元素大,则交换它们的位置。整个过程完成后,数组中最后一个元素自然就是最大值,这样也就完成了第一轮的比较。

第二步,除了最后一个元素,将剩余的元素继续进行两两比较,过程与第一步相似,这样就可以将数组中第二大的数放在倒数第二个位置。

第三步,依次类推,持续对越来越少的元素重复上面的步骤,直到没有任何一对元素需要比较为止。 了解了冒泡排序的原理之后,接下来通过一个案例来实现冒泡排序,如例5-4所示。 例5-4

1 #include

2 void main(int argc, char ** argv[])

4

3 { 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 }

int x[5] = { 9, 8, 3, 5, 2 }; int m = 0, n = 0; int nTemp = 0; int i = 0;

printf(\冒泡排序前:\\n\for (i = 0; i < 5; i++) { }

printf(\

for (m = 0; m < 5 - 1; m++) { }

printf(\冒泡排序后:\\n\for (i = 0; i < 5; i++) { }

printf(\

printf(\\

for (n = 0; n < 5 - 1 - m; n++) { }

if (x[n] > x[n + 1]) { }

nTemp = x[n]; x[n] = x[n + 1]; x[n + 1] = nTemp;

printf(\\

运行结果如图5-5所示。

图5-5 运行结果

在例5-4中,通过嵌套for循环实现了冒泡排序。其中,外层循环用来控制进行多少轮比较,每一轮比较都可以确定一个元素的位置,由于最后一个元素不需要进行比较,因此,外层循环的次数为数组的长度-1,内层循环的循环变量用于控制每轮比较的次数,在每次比较时,如果前者小于后者,就交换两个元素的位置,具体执行过程如图5-6所示。

5

第5章 数组C语言教程零基础到大神

第5章数组学习目标?掌握数组的概念?掌握一维数组的使用?掌握二维数组的使用在前面所学的章节中,所使用的数据都属于基本数据类型,除此之外,C语言还提供了构造类型的数据,构造类型的数据包括数组类型、结构体类型和共用体类型。本章就针对其中的数组类型进行讲解。5.1什么是数组在程序中,经常需要对一批数据进行
推荐度:
点击下载文档文档为doc格式
5wht436tox1is530855j3blzb1bw3200hnu
领取福利

微信扫码领取福利

微信扫码分享