C语言教学课件之数组.ppt
《C语言教学课件之数组.ppt》由会员分享,可在线阅读,更多相关《C语言教学课件之数组.ppt(95页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、C C 程程 序序 设设 计计问问 题题如果需要如果需要处处理理1名学生的名学生的10门课门课程的成程的成绩绩,用什么来,用什么来存存储这储这些数据?些数据?方法一:定方法一:定义义10个个变变量,每个量,每个变变量中存放量中存放1门门成成绩绩。方法二:定方法二:定义义一个可以存一个可以存储储10门门成成绩绩一一维维数数组组。课课程程1课课程程2课课程程3课课程程4课课程程5课课程程6课课程程7课课程程8课课程程9课课程程1090819377926879839470变量:杯子,一个变量只能存放一个数据变量:杯子,一个变量只能存放一个数据数组:带多个杯子的数组:带多个杯子的托盘,一个数组托盘,一
2、个数组可以存放多个数据可以存放多个数据数轴上的一维向量数轴上的一维向量x=1,2,-2,1,0,3;就相当于一维数组就相当于一维数组 直角坐标系中的矩阵就相当于二维数组直角坐标系中的矩阵就相当于二维数组 E4.1 一维数组一维数组 4.2 二二维数组维数组 4.3 字符数组字符数组一维数组定义格式一维数组定义格式:类型说明符类型说明符 数组名数组名 整型常量表达式整型常量表达式;例如:例如:int a10;就定义了一个包含就定义了一个包含10个整型元素的数组个整型元素的数组a,它的内存大小可以存放它的内存大小可以存放10个整型数据。个整型数据。4.1.1 一一 维数组的定义维数组的定义类型说明
3、符类型说明符 数组名数组名 整型常量表达式整型常量表达式;int,charint,char等都可以,等都可以,说明此数组中每个说明此数组中每个 元素都属于此类型元素都属于此类型命名规则与变量一致命名规则与变量一致不能和其他变量重名不能和其他变量重名指定元素的个指定元素的个数,最小为数,最小为0 0,不能是变量不能是变量#define N 3int aN;int a3+5;int a1.5;int n;scanf(“%d”,&n);int an;int a;int a3;int a,b3;int n=3;int an;【例【例 4.1】判断以下数组定义是否合法,判断以下数组定义是否合法,并说明原
4、因。并说明原因。(1)int a2.5;(2)int a-3;(3)int i=3;(4)int i;int ai;scanf(“%d”,&i);int ai;(5)#define N 3 (6)int a;int a N;int a3;(7)int a2+3;(8)int i,a3,b0;4.1.2一维数组元素的引用一维数组元素的引用一维数组引用格式一维数组引用格式:数组名数组名 下标下标 a0 a1 a2 a3 a4 a5 a6 a7 a8 a9注意:注意:1.1.数组必须先定义,再使用。数组必须先定义,再使用。2.2.只能逐个引用数组元素,不能一次引用整个数组。只能逐个引用数组元素,不能
5、一次引用整个数组。例如:例如:int a10;可以使用可以使用a0、a1.a9 。若有。若有 a=1;或者或者a10=1;出错。出错。a10不代表整个数组,它是不代表整个数组,它是下标为下标为10的元素,越界!的元素,越界!13.3.下标可以是下标可以是常量常量或或变量变量,它表示元素的序号,它表示元素的序号。例如:例如:int i=3,a10;ai=1;表示给下标为表示给下标为3的元素赋值为的元素赋值为1。4.4.一维数组在内存中连续存放,一维数组在内存中连续存放,先存放下标为先存放下标为0的元素,的元素,再存放下标为再存放下标为1的元素,的元素,依次直至存放完所有元素。依次直至存放完所有元
6、素。【例【例 4.2】定义一个包含】定义一个包含3个整型元素的数组个整型元素的数组a,输出其元素值。,输出其元素值。只定义数组,不给数组元素赋值,只定义数组,不给数组元素赋值,数组元素中存放的是随机值。数组元素中存放的是随机值。一般要先给数组元素赋值,再使用。一般要先给数组元素赋值,再使用。数组名数组名a中存放的是数组起始元素的地址中存放的是数组起始元素的地址【例【例 4.3】定义一个包含】定义一个包含3个整型元素的数组个整型元素的数组a,从键盘给数组元素输入值,然后输出。,从键盘给数组元素输入值,然后输出。【例【例 4.4】定义一个包含】定义一个包含10个整型元素的数组个整型元素的数组a,从
7、键盘给数组元素输入值,然后输出。从键盘给数组元素输入值,然后输出。4.1.3一维数组的初始化一维数组的初始化定义一维数组的同时给数组元素赋初值称为一维数定义一维数组的同时给数组元素赋初值称为一维数组的初始化。组的初始化。其一般格式为:其一般格式为:类型说明符类型说明符 数组名数组名N=初值初值1,初值初值2,初值初值N;其中,其中,N是表示数组元素个数的常量。是表示数组元素个数的常量。一维数组的初始化方式有以下几种:一维数组的初始化方式有以下几种:(1)全部元素初始化:)全部元素初始化:char a3=1,2,n;int b5=2,11,3,14,5;int b =2,11,3,14,5;in
8、t b4=2,11,3,14,5;在对数组的所有元素在对数组的所有元素赋初值时,可以不指赋初值时,可以不指定数组长度。系统自定数组长度。系统自动定义其长度为动定义其长度为5初值个数不能超过初值个数不能超过数组长度。否则,数组长度。否则,会出现语法错误。会出现语法错误。(2)全部元素初始化:)全部元素初始化:int a10=0,1,2;char a10=1,2;(3)全部元素初始化为)全部元素初始化为0:int a10=0;将将a0a2依次初始依次初始化为化为0、1、2。未赋值。未赋值的元素的元素a3a9值全值全部被初始化为部被初始化为int中表中表示假的值示假的值0。将元素将元素a0a9 全全
9、部初始化为部初始化为0将将a0a1依次初始依次初始化为化为0、1。未赋值。未赋值的元素的元素a2a9值全值全部被初始化为部被初始化为char中中表示假的值表示假的值0。若想全部初始化为若想全部初始化为1int a10=1;错误错误【例【例 4.5】定义一个含有】定义一个含有10个元素的整型一维数组个元素的整型一维数组并全部初始化,将数组中所有元素逆序输出。并全部初始化,将数组中所有元素逆序输出。【例【例4.64.6】:用冒泡法对:用冒泡法对5个数排序。个数排序。解:冒泡排序过程如后面图所示,其中,红圈以解:冒泡排序过程如后面图所示,其中,红圈以内为已排好序的记录。内为已排好序的记录。规则:令相
10、邻位置的数依次比较,若上面规则:令相邻位置的数依次比较,若上面的数大,则交换。的数大,则交换。414135241 交换交换43 交换交换342 交换交换1 13 不交换不交换34 32 交换交换513245 12 交换交换12345 12不交换不交换结果结果 12345R 第第0趟趟 第第1趟趟 第第2趟趟 第第3趟趟第第0次次第第1次次第第2次次第第3次次for(i=0;iRj+1 的值)则交换 j增1 for(j=0;j4i;j+)/内循环 如果(Rj的值R2的值的值)temp R1;R1 R2;R2 temp;j增加增加1,比较,比较Rj 和和 Rj+1的大小的大小 如果如果(Rj的值的
11、值Rj+1的值的值)j增加增加1,比较,比较Rj 和和 Rj+1 的大小的大小实现实现交换交换43 交换交换R1R243 不交换不交换4R25R32R4temp 2.交交 换换 过过 程程 与与 核核 心心 程程 序序434 int i;int j;for(i=0;i=3;i+)for(j=0;jRj+1的大小的大小)temp Rj;Rj Rj+1;Rj+1 temp;3.循循 环环 与与 核核 心心 程程 序序 的的 组组 合合 int i,j;类型一样,类型一样,合并在一起合并在一起外循环,将处外循环,将处理理5个数推广个数推广到处理到处理n个数个数 for(i=0;i=n-2;i+)内循
12、环内循环for(j=0;jRj+1)满足交换条件,满足交换条件,则交换;在程序则交换;在程序中将赋值箭头转中将赋值箭头转换为赋值等号换为赋值等号temp=Rj;Rj=Rj+1;Rj+1=temp;标出交换的起标出交换的起始位置始位置标出内循环的标出内循环的起始位置起始位置标出外循环的标出外循环的起始位置起始位置4.冒冒 泡泡 算法整理算法整理 int i,j;/定义int 类型的变量i,j int temp;/定义新的存储单元 tempfor(i=0;i=n-2;i+)/外循环 for1 /外循环for1开始 for(j=0;jRj+1)/比较数组R 中相邻元素值的大小 /开始交换 temp=
13、Rj;/先将Rj中的值赋给 temp Rj=Rj+1;/再将Rj+1中的值赋给Rj Rj+1=temp;/最后又把temp中的值赋给Rj+1 /结束交换 /内循环for2结束 /外循环for1结束 /经过n1=4 次循环,完成排序功能5.冒泡算法真实程序冒泡算法真实程序6.优化推广程序优化推广程序改进的冒泡排序算法改进的冒泡排序算法例如:待排序的数组元素为:例如:待排序的数组元素为:3,1,2,5,4313124531 交换交换32 交换交换224 不交换不交换451 13 不交换不交换23 34 不交换不交换45 45 不交换不交换 12不交换不交换结果结果 12345R i=0 i=1j=
14、0j=1j=2j=3排好排好设置一个标识量,若某趟中一次交换也没有设置一个标识量,若某趟中一次交换也没有进行,设置标识量的值,代表数据已完全排进行,设置标识量的值,代表数据已完全排好,不需要进行后面的排序。好,不需要进行后面的排序。【例【例 4.7】改进冒泡排序算法。】改进冒泡排序算法。【例【例 4.8】从键盘输入】从键盘输入10个学生成绩,计算出个学生成绩,计算出 平均成绩,并输出高于平均分的学生成绩。平均成绩,并输出高于平均分的学生成绩。【例】求【例】求fibonacci数列的前数列的前20项,并输出。项,并输出。fibonacci:1,1,2,3,5,8,13,21 4.1 一维数组一维
15、数组E4.2 二二维数组维数组 4.3 字符数组字符数组问问 题题如果需要如果需要处处理理3 3名学生的期末成名学生的期末成绩绩,每名学生有,每名学生有4 4门课门课程的成程的成绩绩,用什么来存,用什么来存储这储这些数据?些数据?方法一:定方法一:定义义12个个变变量,每个量,每个变变量存量存储储1个学生的个学生的1门课门课程成程成绩绩。方法二:方法二:为为3名学生各定义名学生各定义3个数组,每个数组可以存个数组,每个数组可以存放放4门成绩。门成绩。方法三:方法三:用一个用一个3行行4列的二维数组来存储。列的二维数组来存储。成成绩绩表表数学数学英英语语计计算机算机C语语言言学生学生192899
16、6.580学生学生288.5679070学生学生3719088604.2.1 二维数组的定义二维数组的定义1.1.格式格式:类型说明符类型说明符 数组名数组名 常量表达式常量表达式MM 常量表达式常量表达式N N ;例例:float a34;0120 1 2 3M和和N只能是正整数只能是正整数例:例:float a342.二维数组可以看成是由一维数组组成的二维数组可以看成是由一维数组组成的3.二二维数组在内存中连续存维数组在内存中连续存放,先顺序存放第一行的元放,先顺序存放第一行的元素,再存放第二行的元素,素,再存放第二行的元素,依次直至存放完所有元素。依次直至存放完所有元素。4.2.2 二维
17、数组的引用二维数组的引用引用格式引用格式引用格式引用格式:数组名数组名 行下标行下标 列下标列下标 ;例例:int a23;a00、a01、a02 a10、a11、a1212 15 365 8 13常出现的错误:常出现的错误:下标越界!下标越界!a23=3;/*应应为为a12=3;*/4.2.3 二维数组的初始化二维数组的初始化1 1、分行赋初值、分行赋初值:例:例:int a34=1,2,3,4,5,6,7,8,9,10,11,12;1 2 3 4 5 6 7 8 9 10 11 122 2、全部数据写在一个花括号内,按数组排列的顺序对、全部数据写在一个花括号内,按数组排列的顺序对各元素赋初
18、值:各元素赋初值:例:例:int a34=1,2,3,4,5,6,7,8,9,10,11,12;赋初值时,数组的行下标可赋初值时,数组的行下标可以省略,例如:以省略,例如:int a 4=.。3、对部分元素赋初值、对部分元素赋初值:(1)int a34=0,1,2;0 1 2 0 0 0 0 0 0 0 0 0 功能:功能:仅对仅对a00a00、a01a01、a02a02赋值,其余赋值,其余为为0 0(2 2)int a34=1,5,6,9;1 0 0 0 5 6 0 0 9 0 0 0 功能:功能:仅对仅对a00、a10、a11、a20赋值,其余为赋值,其余为0【例【例4.9】求一个】求一个
19、3*4矩阵的最大值及其所在矩阵的最大值及其所在 行列下标。行列下标。【例【例4.10】3名学生各有名学生各有4门课程的成绩,计门课程的成绩,计算每个学生的平均成绩。算每个学生的平均成绩。【例【例4.11】打印输出杨辉三角形(输出前】打印输出杨辉三角形(输出前10行)行)多维数组多维数组多维数组多维数组定义格式:定义格式:类型类型 数组名数组名 常量表达式常量表达式1 1 常量表达式常量表达式2 2;例例:int a333;注注意意:多多维维数数组组的的元元素素在在内内存存中中的的排排列列顺顺序序是是按按行行存存放。放。引用格式:引用格式:数组名数组名下标下标下标下标例例:a000=100;a0
20、12=20;a222=50;一个一个n维数组可以看成由多个维数组可以看成由多个n-1维数组构成。维数组构成。4.1 一维数组一维数组 4.2 二维数组二维数组E4.3 字符数组字符数组在程序中如果要存储姓名、地址等类型的数据,例在程序中如果要存储姓名、地址等类型的数据,例如:如:“小明小明”、“成都市高新西区西园大道成都市高新西区西园大道1号号”等需等需要使用什么样的类型呢?这些是字符串,要使用什么样的类型呢?这些是字符串,C语言中语言中没有专门的字符串变量,没有专门的字符串变量,如果要存储字符串,需要如果要存储字符串,需要用到字符数组。用到字符数组。字符数组是专门用来存放字符数据字符数组是专
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 教学 课件 数组
限制150内