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