数组的基本概念汇总
C语言数组知识点总结

数组定义:数组是有序的并且具有相同类型的数据的集合;一维数组1、一般形式:类型说明符数组名常量表达式;例如: int a10; 元素为a0----a9.2、常量表达式中不允许包含变量,可以包含常量或符号常量;3、数组元素下标可以是任何整型常量、整型变量或任何整型表达式;4、可以对数组元素赋值,数组元素也可以参与运算,与简单变量一样使用;5、使用数值型数组时,不可以一次引用整个数组,只能逐个引用元素;6、需要整体赋值时只可以在定义的同时整体赋值;如int a10={0,1,2,3,4,5,6,7,8,9};正确;int a10; a10={0,1,2,3,4,5,6,7,8,9};错误;7、可以只给一部分元素赋值;例如:int a10={5,8,7,6};后面没有赋值的元素值默认为0;8、对全部数组元素赋值时可以不指定数组长度,例如:int a10={0,1,2,3,4,5,6,7,8,9};可以写成 int a={0,1,2,3,4,5,6,7,8,9};但是,既不赋初值,也不指定长度是错误的;例如:int a;错误;二维数组1、一般形式:类型说明符数组名常量表达式1常量表达式2;例如:int a34;可以看成是包含3个一维数组,每个一维数组里包含4个元素;一共34=12个元素;所有元素为 a00,a01,a02,a03a10,a11,a12,a13a20,a21,a22,a232、与一维数组一样元素下标可以是是任何整型常量、整型变量或任何整型表达式;3、需要整体赋值时只可以在定义的同时整体赋值;例如:int a34={{1,2,3,4},{5,6,7,8},{9,10,11,12}};正确;int a34; a34={{1,2,3,4},{5,6,7,8},{9,10,11,12}};错误;4、可以把所有数据写在一个花括号内;例如:int a34={1,2,3,4,5,6,7,8,9,10,11,12};正确;5、可以只对部分元素赋值;例如:int a34={{1},{5},{9}};其余未赋值的元素默认为0;int a34={{1},{5,6}};可以看成是int a34={{1,0,0,0},{5,6,0,0},{0,0,0,0}};6、对全部数组元素赋值时可以省略第一维长度,第二维不可以省略;例如:a34={{1,2,3,4},{5,6,7,8},{9,10,11,12}};可以写成a4={{1,2,3,4},{5,6,7,8},{9,10,11,12}};或者a4={1,2,3,4,5,6,7,8,9,10,11,12};字符数组1、定义:char a10;字符数组a长度为10;每个元素只能存放一个字符;例如:a0='h';a1='a';a2='p';……2、初始化:char a={'h','a','p','p','y'};char a="happy";char a={"happy"}; 注意,因为字符串结尾自动加'\0',所以char a="happy";长度为6,不是5;3、C语言中没有字符串变量,字符串的输入、存储、处理和输出等必须通过字符数组实现;4、字符串的输入;scanf;可以用%C逐个字符输入比如char a6;fori=0;i<6;i++ scanf"%c",&ai;可以用%S以字符串的形式输入,比如char a6;scanf"%s",a;注意,a前不用加&,因为a是数组名,已经代表了数组首地址;注意:以%S输入时,以第一个非空白字符开始,终止于第一个空白字符;比如:输入How are you时;只输出How.gets;作用为输入一个字符串;与scanf;功能一致,但空格和回车都存放在数组中,最后自动加入‘\0’.不会出现上面输出不全的情况;调用方式为:gets数组名;需要包含头文件“stdio.h”.5、字符串的输出;printf;可以使用%C逐个字符输出,比如:char a6;fori=0;i<6;i++ printf"%c",ai;可以用%S以字符串的形式输出,比如char a6;printf"%s",a;puts;输出一个字符串,结尾自动换行;调用形式:puts字符数组名或字符串常量;需包含头文件“stdio.h”常用字符串处理函数以下函数需要头文件“string.h”1、strlen作用是测试字符串长度;这里不包括‘\0’.使用形式strlen数组名或字符串常量2、strcat作用是连接两个字符串;调用方式strcat字符数组1名,字符数组2名;合并后的字符串存放在字符数组1中;3、strcmp比较两个字符串是否相等;调用方式strcmp字符串1,字符串2;相等时值为0;1>2时为正数;1<2时为负数;4、strcpy复制字符串;调用方式strcpy字符数组1,字符串2;2的内容复制到1中;1只能是字符数组名;。
数组的概念与应用

数组的概念与应用当今信息时代,数据处理成为了各个领域能力的核心。
而在程序设计中,数组是一种重要的数据结构,它的概念和应用广泛存在于各种编程语言中。
本文将从数组的基本概念入手,逐步介绍数组的应用场景和实际运用。
一、数组的基本概念数组是一种由相同类型的数据元素组成的有限集合,这些数据元素在内存中被顺序存储,并且可以通过索引值来访问。
数组通常被用于存储和操作一系列相关的数据,比如一组数字、一组字符串等。
在大多数编程语言中,数组都是通过下标来引用其中的元素,而数组的下标通常从0开始。
二、数组的应用场景1. 数据存储:数组通常用于存储大量数据,并且可以通过索引快速访问到每一个元素。
比如,一个学生管理系统可以使用数组来存储学生的信息,每个学生的信息都可以通过索引进行定位和操作。
2. 数据排序:排序是计算机科学中的经典问题,而数组在排序中起到了重要的作用。
通过对数组元素的比较和交换,可以实现各种排序算法,如冒泡排序、插入排序和快速排序等。
3. 数据统计:数组可以用于对一组数据进行统计分析。
比如,统计一组成绩的平均值、最大值、最小值等,都可以通过定义一个数组来存储这些数据,然后进行相应的计算。
4. 图像处理:在图像处理中,数组被广泛应用于表示和处理图像数据。
图像数据通常是一个二维数组,每个元素表示一个像素的颜色值,通过对数组的操作可以实现图像的旋转、缩放和滤波等功能。
三、数组的实际运用1. 数组的定义和初始化:在程序中使用数组,首先需要定义数组的类型和大小,然后进行初始化。
以C语言为例,定义一个包含5个整数的数组可以使用如下语句:int array[5] = {1, 2, 3, 4, 5};2. 数组的访问和操作:通过数组的索引可以访问和操作数组中的元素。
比如,对于上述定义的数组,可以使用array[2]来访问第三个元素,并可以对其进行赋值或运算。
3. 多维数组:除了一维数组外,程序中还可以使用多维数组来表示更复杂的数据结构。
数组的基础知识 一维数组 二维数组 控件数组 动态数组

1.2 数组的维数
如果数组的元素只有一个下标,则称这个数组为一 维数组。 用两个下标来表示元素的数组称为二维数组。对于 可以表示成表格形式的数据,例如矩阵、行列式 等,用二维数组来表示是非常方便的。 根据问题的需要,我们还可以选择使用三维数组、 四维数组,甚至更多维的数组。在Visual Basic 中最多允许有60维数组。例如我们想表示空间上 的一个点P,其坐标有三个,分别是X轴、Y轴、 Z轴上的坐标,那么我们可以使用三维数组来表 示,数组的第一维表示X坐标,第二维表示Y坐标, 第三维表示Z坐标,如用P(x,y,z)来表示。
ReDim [Preserve] 数组名[(维数定义)][As 数据类型]……
5.3 相关知识
几点说明: (1) “上界”和“下界”可以是常量和有确定值的变量; (2)可以使用“ReDim”语句多次改变数组的数组元素个数和维 数,但不能改变这个数组的数据类型; (3)如果重新定义数组,则会删除它原有数组元素中的数据,并 将数值型数组元素全部赋0,将字符型数组元素全部赋空串; (4)如果要重定义后不删除原有数据,应在定义数组时增加 “Preserve”关键字,只能改变最后一维的上界,不可以改变 数组的维数。 (5)ReDim语句只能出现在过程中。 由上可知,动态数组声明时省略了括号中的下标,没有给定数组 的大小。使用时需要用“ReDim”语句重新指出其大小。使用 动态数组的优点是根据用户需要,有效地利用存储空间,是在 程序执行到ReDim语句时才分配存储单元,而静态数组是在程 返回 序编译时分配存储单元的
返回
2.1数列排序案例说明
该程序可以产生一个包含十个元素的随机整数序 列,通过运行代码可以求出这个数列中的最大 值、数列的平均值以及按升序排列,当按下 “插入新数据”按钮时,用户可以通过键盘输 入一个新的整数,构成一个包含11个元素的数 组,并且把新输入的整数按升序插入到正确的 位置,
数组知识

第六章一、数组的概念数组是共享一个名字的一组具有相同类型的连续存放的变量的集合数组是一组有序数据的集合数组中各数据的排列是有一定规律的,下标代表数据在数组中的符号所有的数组元素具有统一的数据类型数组名是数组的首地址,每个元素是连续存放的数组元素是由数组名和下标唯一确定二、一维数组①怎样定义一维数组一维数组的定义方式为类型标识符数组名[常量表达式]其中类型标识符:任一种基本数据类型或者是构造数据类型数组名:自己定义的数组标识符,遵从标识符命名规则常量表达式表示数组的长度,也是元素的个数注意:(1)数组名不能和变量名相同(2)定义的时候要指定数组中的元素个数常量表达式可以包括常量和符号常量比如int[3+5]是合法的但是不可以包括变量int a[n]是不合法的C不允许对于数组的大小进行动态定义不过如果在被调用的函数中(不包括main)中定义数组其长度可以是变量或者非常量的表达式比如Void func(int n){ int a[2*n] //合法的n的值从实参中传来调用func函数时形参n从实参中得到值这种情况叫做“可变长数组”,允许在每次调用func时有不同的n不过每次使用的时候数组的长度是固定的(3)数组的大小不可以是浮点常量(4)定义数组的时候不能没有数组长度int a[] 非法②一维数组元素的引用数组元素是组成数组的基本单元 数组元素也是一种变量 引用的格式数组名[数组下标]其中数组下标只可以是整型常量或者整型表达式 如果是小数的话c 编译的时候会自动取整数组在定义之后数组名代表数组的首地址其中的元素按照下标依次存放而且下标从0开始!数组定义之后系统将给其分配一定的内存单元其所占内存单元的大小和数组元素的类型和数组的长度有关数组所占内存单元字节数=数组大小*sizeof (数组元素类型)其中Int 2字节(TC 中)编译器不同可能不同 Char 1 Short 1 Long 4 Float 4 Double 8比如要引用a[2] 就会先计算2000+2*2=2004 然后再从2004中取出内容占用的字节数为: 10 * sizeof(int) = 10 * 2 = 20内存地址2000 200220042018a……第1个元素 ……第2个元素 第3个元素第10个元素注意事项(1)只可以逐个引用数组的元素,不能一次性引用整个数组(所以常用循环)(2)数组引用要注意越界问题C语言对于数组不作越界检查,但是下标超范围会死机或者程序错误(3)一般对于数组长度会采用宏定义define③一维数组的初始化如果对于一维数组不赋初值,则为随机数对于数组元素的赋值,叫做数组的初始化不赋值不叫初始化数据类型符数组变量名[常量表达式]={表达式1…表达式n}(1)在定义数组时对全部数组元素赋予初值Inta[5]={1,2,3,4,5};数组的元素要放在花括号里边,元素之间用逗号隔开花括号里边的数据叫做“初始化列表”(2)也可以只给数组中的一部分元素赋值Inta[5]={1,2,3};则只给前三个赋值,后边两个自动为0(3)如果想让一个数组中的元素全部都为0,可以写Int a[5]={0,0,0,0,0}; 或者Int a[5]={0};//未赋值的部分自动为0(4)在对全部数组元素赋初值的时候由于元素的个数确定可以不用指定数组的长度Int a[]={1,2,3,4,5};虽然是没有指定长度不过系统会自动默认是5不过不可以int a[];所以如果要定义的长度比赋值的长度长,就要写下标注意:表达式的个数不能超过数组变量的大小如果定义数值型数组的时候未被初始化列表指定初始化的都是0如果定义字符型数组的时候未被初始化列表指定初始化的都是’\0’如果定义指针型数组的时候未被初始化列表指定初始化的都是NULL空指针C语言除了在定义数组变量时可以对数组整体赋值之外无法再全体赋值所以Char a[3]A=,‘1’,’2’,’3’-A*+=,‘1’’2’3’-;A*3+=,‘1’’2’’3’-; 都是错的所以数组定义后只能用赋值语句一一赋值Char str[80];Str*0+=’b’ str*1+=’y’ str*2+=’e’ str*3+=’\0’ //数组str赋值为一字符串bye一般一维数组的赋值使用循环语句④一维数组程序举例冒泡法折半查找法斐波那契数列请见第二章书上出现的算法三、二维数组①怎样定义二维数组类型符数组名[常量表达式][常量表达式];二维数组可以看作特殊的一维数组 它的元素又是一维数组a[0] a[0][0] a[0][1] a[0][2] a[1] a[1][0] a[1][1] a[1][2] a[2] a[2][0] a[2][1] a[2][2]数组元素的存放顺序已行序优先最右下标变化最快 二维数组的a[0]a[1] 不可以当成数组元素变量使用 对于a[0]是数组名 是a[0][0] a[0][1] a[0][2]的地址 二维数组的存贮空间 是先按照行序再列的比如float a[3][4] 一共有12个元素由于是float 类型每个元素占四个字节所以一共是48个字节 存储顺序a00 a01 a02 a03 a10 a11 a12 a13 a20 a21 a22 a23②怎样引用二维数组数组名[下标][下标]对于int a[4][5]以及a[4][5]有什么差别前者定义了4行五列的二维数组最多引用到a34而a45 说明引用到了第五行和第六列则至少应该为int a[5][6]③二维数组的初始化数据类型数组变量名[行常量表达式][列常量表达式]= {{第0行初值表},{第1行初值表},…{最后1行初值表}}(1) 分行给二维数组赋初值Int a[3][4]={{1,2,3,4},{2,3,4,5},{3,4,5,6}};(2) 可以把所有数据都放在一个花括号内,按照数组元素排列顺序依次赋值Int a[3][4]={1,2,3,4,5,6,7,8,9,0,1,2};014523(3)可以对于部分元素赋初值Int a[3][4]={{3},{4},{5}};也可以只对某几行赋值(4)定义的时候第一维长度可以省略第二维不能省略Int a[][4]={{0,0,3},{},{1,2}}④二维数组程序举例对二维数组的每个元素进行操作要用二重循环外层循环控制行下标的变化,内层循环控制列下标变化输出二维数组两条对角线元素值的和Sum1+=a[i][i] //主对角线Sun2+=a[i][2-i] //副对角线矩阵左下半三角元素中的值置为0For(i=0;i<n;i++)For(j=0;j<=I;j++)A[i][j]=0;对二维数组元素的操作,实际上就是先找出对应元素的行下标与列下标,然后进行操作。
c语言中数组的概念

在C语言中,数组是一种用于存储相同类型的多个元素的数据结构。
数组提供了一种有序、连续的内存存储方式,通过索引(下标)来访问单个元素。
以下是关于C语言中数组的一些基本概念:1. **声明数组:** 在C语言中,你可以使用以下语法声明一个数组:```ctype arrayName[arraySize];```其中,`type` 是数组中元素的数据类型,`arrayName` 是数组的名称,`arraySize` 是数组的大小,表示数组可以容纳的元素个数。
例如:```cint numbers[5]; // 声明一个包含5个整数的数组```2. **数组索引:** 数组中的每个元素都有一个唯一的索引,索引从0开始,递增到数组大小减1。
例如,对于上面的数组`numbers`,索引范围是0到4。
```cnumbers[0] = 10; // 给数组的第一个元素赋值numbers[1] = 20; // 给数组的第二个元素赋值```3. **数组初始化:** 在声明数组的同时,可以初始化数组的元素。
```cint numbers[5] = {10, 20, 30, 40, 50}; // 初始化一个包含5个整数的数组```4. **多维数组:** C语言支持多维数组,例如二维数组。
二维数组可以看作是一个表格,有行和列。
```cint matrix[3][3] = {{1, 2, 3},{4, 5, 6},{7, 8, 9}};```5. **数组和指针:** 数组和指针在C语言中有着紧密的关系。
数组名本身就是一个指向数组首元素的指针。
```cint arr[3] = {10, 20, 30};int *ptr = arr; // 数组名arr是指向数组首元素的指针```6. **数组作为函数参数:** 数组可以作为函数参数传递。
在函数中,数组参数通常以指针的形式传递。
```cvoid printArray(int arr[], int size) {for (int i = 0; i < size; i++) {printf("%d ", arr[i]);}printf("\n");}```这些是关于C语言中数组的基本概念。
excel 数组的定义

excel 数组的定义Excel 数组的定义Excel 数组是一种用于存储和处理数据的数据结构。
它由多个单元格组成,可以根据需要进行扩展或收缩。
在Excel 中,数组是一种非常有用的方式,可以同时处理多个数据,并进行各种计算和分析。
1. 数组的基本概念数组由单元格组成,可以按照不同的维度进行排列。
在Excel 中,数组可以是一维的,也可以是多维的。
一维数组由一行或一列的单元格组成,用于存储一组相关的数据。
多维数组由多行多列的单元格组成,用于存储更复杂的数据结构。
2. 数组的创建和操作在Excel 中,可以通过直接输入数据或使用函数来创建数组。
创建数组后,可以对数组进行各种操作,如排序、筛选、求和等。
可以使用各种函数来处理数组,如SUM、AVERAGE、MAX、MIN等,以实现各种计算和分析需求。
3. 数组的优势和应用数组在 Excel 中具有以下优势和应用:- 数据存储:数组可以有效地存储大量数据,方便进行数据管理和分析。
- 数据处理:数组可以进行各种计算和分析操作,如求和、平均值、排序等。
- 数据展示:数组可以用于生成图表和报表,直观地展示数据分布和趋势。
- 数据筛选:数组可以根据指定条件对数据进行筛选,便于找出符合要求的数据。
- 数据比较:数组可以进行数据之间的比较,帮助找出最大值、最小值等统计信息。
4. 数组的注意事项在使用数组时,需要注意以下事项:- 数据类型:数组中的数据类型应一致,避免混淆和计算错误。
- 数据范围:数组的数据范围应正确设置,避免数据缺失或重复。
- 数据更新:数组中的数据如有更新,应及时刷新或重新计算,保持数据的准确性。
- 数据保护:对于重要的数组数据,可以设置保护措施,防止误操作或数据泄露。
5. 数组的示例和案例分析下面通过一个示例和案例分析,展示数组在 Excel 中的应用。
示例:假设有一个销售数据表,包含产品名称、销售量和销售额等信息。
我们可以使用数组来处理这些数据,计算总销售量、平均销售额等统计信息,并根据不同的条件进行数据筛选和排序。
数组程序设计

数组程序设计数组程序设计是计算机科学中的基础概念之一,它允许程序员以一种有序的方式存储和访问数据。
数组是一种数据结构,可以存储相同类型的元素集合。
在不同的编程语言中,数组的实现和使用方式可能有所不同,但其核心概念是一致的。
一、数组的基本概念数组是一个连续的内存块,其中的每个元素都可以通过索引来访问。
索引通常从0开始,这意味着数组的第一个元素的索引是0,第二个元素的索引是1,依此类推。
二、数组的分类1. 一维数组:最基本的数组形式,只有一个维度,例如一个整数列表。
2. 多维数组:具有多个维度的数组,最常见的是二维数组,类似于矩阵,可以表示表格数据。
三、数组的声明和初始化在不同的编程语言中,数组的声明和初始化方式可能有所不同。
以下是几种常见语言的示例:- C语言:```cint arr[10]; // 声明一个可以存储10个整数的数组int arr[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; // 初始化数组```- Java:```javaint[] arr = new int[10]; // 声明并初始化一个长度为10的整数数组int[] arr = {1, 2, 3, 4, 5}; // 声明并初始化一个具有5个元素的整数数组```- Python:```pythonarr = [1, 2, 3, 4, 5] Python中的列表可以看作是动态数组```四、数组的基本操作数组的基本操作包括:- 访问元素:通过索引访问数组中的元素。
- 修改元素:通过索引修改数组中的元素。
- 遍历数组:使用循环结构遍历数组中的所有元素。
- 查找元素:在数组中查找特定元素的位置。
- 排序:对数组中的元素进行排序。
五、数组的应用场景数组在程序设计中有着广泛的应用,例如:- 存储和处理大量数据。
- 实现算法,如排序和搜索算法。
- 作为其他数据结构的基础,如链表、栈和队列。
六、数组的优缺点优点:- 访问速度快:由于数组是连续存储的,访问元素的时间复杂度为O(1)。
单片机应用之数组概念介绍课件

数组查找:在数组中查找指 定元素
数组分割:将数组分割为多 个子数组
数组去重:去除数组中重复 的元素
插入数组元素:在指定位置 插入新元素
数组排序:对数组进行排序, 如冒泡排序、快速排序等
数组合并:将两个数组合并 为一个数组
数组反转:将数组元素顺序 反转
数组遍历:遍历数组中的每 个元素,进行相应操作
数组的类型
一维数组:线性排列的数据结构, 如int a[5]
二维数组:二维平面的数据结构, 如int a[3][4]
多维数组:多维空间的数据结构, 如int a[2][3][4]
稀疏数组:用于存储稀疏数据的数据 结构,如int a[100][100],其中大 部分元素为0
数组的特点
数组是相同数据类型的元 素的集合
减少对数组的重复访问。
02
优化数组排序算法:选择合适的排序算法,
如快速排序、归并排序等,提高排序效率。
03
利用数组索引:通过合理利用数组索引,
减少循环次数,提高程序执行效率。
04
避免数组越界:在操作数组时,注意检查
数组边界,避免数组越界错误。
谢谢
图像处理:如对 图像进行缩放、 旋转、滤波等操 作
排序和查找:如 对数组进行排序、 查找最大值、最 小值等操作
信号处理:如对 信号进行滤波、 降噪等操作
矩阵运算:如进 行矩阵乘法、矩 阵转置等操作
游戏开发:如游 戏中的角色移动、 碰撞检测等操作
数组的优化技巧
01
减少数组访问次数:通过缓存中间结果,
数组中的元素按照顺序排 列
数组可以通过索引访问和 修改元素
数组可以存储大量的数据, 提高程序的效率
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数组作为函数的参 数时传递的是首地址。
2. 数组元素只能逐个引用,而不能一次引用整个数组。 数组元素的引用与同类型的一般变量使用方式一样。
…… int a[10]; a[0]=10; a[2]=a[0]*5; scanf(“%d”,&a[5]); printf(“%d”,a[5]); ……
1
第七章 数组
一、数组的基本概念
二、一维数组
三、二维数组 四、字符数组
2
第七章 数组
• 数组是一种构造数据类型。
• 数组是有序数据的集合。 • 数组中的每一个元素都属于同一数据类型。
• 用一个统一的数组名和下标唯一地确定数组中的元素。
3
第七章 数组
一维数组的定义 格式 举例 说明
整型表达式,表达式中可以 使用符号常量。
a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9]
4. 常量表达式中可以包含常量和符号常量,不能包含变量。
#define n 10 main() {int a[n], b[n+10],C[2+3]; …… } 4
第七章 数组
一维数组元素的引用 格式 说明
a[1]
a[2] a[3] a[4]
3
2
1
6
第七章 数组
一维数组的初始化 说明
1. 定义数组时,对数组元素பைடு நூலகம்初值。
int a[10]={0,1,2,3,4,5,6,7,8,9};
2. 可以只给一部分数组元素赋初值。
int a[10]={0,1,2,3,4};
上机时可以使 用: 3. 要想使数组中全部元素数据为0,则采用如下形式。 int a[10]={0};
3. 当逐个使用数组中的每一个元素时,通常借助for循环语句。
…… int i,a[10]; for (i=0; i<=9; i++) a[i]=i; for (i=9; i>=0; i--) printf(“%2d”,a[i]); ……
9876543210
5
int a[5]={5,4,3,2,1} 的内存空间
设flag=0
• •
11
由大到小排序
int i,j, a[5],temp; int flag=0; …… for(i=0;i<=3;i++) { flag=0; for(j=4;j>=i+1;j--) if(a[j-1]<a[j]) { temp=a[j]; a[j-1]=a[j]; a[j]=temp; flag=1;} if(flag) bleak; } for (i=0;i<=4;i++) printf(" %d ",a[i]); printf("\n");
10
• • • • • • • • •
第0轮
第1轮 第2轮 第3轮
a[0] a[1] a[2] a[3] a[4] 9 8 1 2 3 8 9 1 2 3 8 1 9 2 3 8 1 2 9 3 8 1 2 3 9 1 2 3 8 9 1 2 3 8 9 1 2 3 8 9
设flag=0,一旦发生交换,flag=1
用冒泡法对5个数排序(由小到大) 。
main( ) { int i,j,a[5],temp; for (i=0; i<=4;i++) {a[i]=int(rand()/100);printf("%d",a[i]);} printf("\n"); for(i=0;i<=3;i++) for(j=0;j>=3-i;j++) if(a[j]>a[j+1]) {temp=a[j]; a[j]=a[j+1]; a[j+1]=temp;} for (i=0;i<=4;i++) printf(" %d ",a[i]); printf("\n"); }
9
一维数组程序举例 例7-3
对冒泡法排序程序的改进。程序演示
int i,j, a[5],temp; int flag=0; …… for(i=0;i<=3;i++) { flag=0; for(j=0;j>=4-i;j++) if(a[j]<a[j+1]) {temp=a[j]; a[j]=a[j+1]; a[j+1]=temp; flag=1;} if(flag) bleak; } for (i=0;i<=4;i++) printf(" %d ",a[i]); printf("\n");
类型说明符 数组名[常量表达式] int a[10];
标识符只能由字母、数字、 下划线组成。且第一个字符 必须为字母或下划线。(第 三章P40)
从a[0]开始, 没有a[10].
1. 数组名的命名规则应遵循标识符的命名规则。 2. 数组名后是方括号,而非圆括号。 3. 常量表达式表示元素的个数,即数组长度。
int a[10]={0,0,0,0,0,0,0,0,0,0};
4. 在对全部数组元素赋初值时,可以不指定数组长度。
int a[ ]={0,1,2,3,4};
7
第七章 数组
一维数组程序举例
例7-1 例7-2
求Fibonacci数列的前20个数。 程序演示
给10个数组元素赋随机数并打印,rand() 函数的作用是产生 程序演示 -90到32767之间的随机 整数,见教材P382。
8
对5个数组元素排序.
输出排序后的5个数组 元素.
• • • • • • • • • • • • •
第0轮
第1轮 第2轮 第3轮
第i 轮
a[0] a[1] a[2] a[3] a[4] 9 8 5 4 2 8 9 5 4 2 8 5 9 4 2 8 5 4 9 2 8 5 4 2 9 5 4 2 8 9 4 2 5 8 9 2 4 5 8 9 a[0] ~a[4-i] 之间两两比较 即 if (a[j]>a[j+1] ) j的取值0~3-i a[j]交换a[j+1]
a[0]
5
4
数组的名字代表的是数组的首地址 a[0]的首地址是a+0, a[0]~~*(a+0) a[1]的首地址是a+1 a[1]~~*(a+1) a[2]的首地址是a+2 a[2]~~*(a+2) a[3]的首地址是a+3 a[3]~~*(a+3) a[4]的首地址是a+4 a[4]~~*(a+4) 可以定义一个整型的指针变量,存储数组首地址 int *p=a;