c语言教学ppt第11讲.ppt

上传人:wuy****n92 文档编号:80459647 上传时间:2023-03-23 格式:PPT 页数:27 大小:265.50KB
返回 下载 相关 举报
c语言教学ppt第11讲.ppt_第1页
第1页 / 共27页
c语言教学ppt第11讲.ppt_第2页
第2页 / 共27页
点击查看更多>>
资源描述

《c语言教学ppt第11讲.ppt》由会员分享,可在线阅读,更多相关《c语言教学ppt第11讲.ppt(27页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、第第6 6章章 数组数组第第11 11讲讲 数组的定义和使用数组的定义和使用教学目的与要求:教学目的与要求:掌握一维数组的定义和引用掌握一维数组的定义和引用 掌握二维数组的定义和引用掌握二维数组的定义和引用教学内容提要:教学内容提要:1.1.一维数组的定义和引用一维数组的定义和引用 2.2.二维数组的定义和引用二维数组的定义和引用教学重点:一维数组的定义和引用教学重点:一维数组的定义和引用教学难点:二维数组的定义和引用教学难点:二维数组的定义和引用教学进度:教学进度:P139P151P139P151教学过程:教学过程:1第第6 6章章 数组数组数学中:数学中:a1,a2,a3,ai,anC程序

2、中:程序中:a0,a1,a2,ai-1,an-1 数组是数目固定,类型相同的若干变量的有数组是数目固定,类型相同的若干变量的有序集合。序集合。数组中的每一个数称为数组元素,数组中的数组中的每一个数称为数组元素,数组中的每一个元素都属于同一个数据类型。每一个元素都属于同一个数据类型。在内存中数组占有一段连续的存储空间。在内存中数组占有一段连续的存储空间。2第第6 6章章 数组数组一、一维数组一、一维数组1、一维数组的定义、一维数组的定义定义的格式:定义的格式:类型说明符类型说明符 数组名数组名整常量表达式整常量表达式;说明:说明:(1)类型说明符)类型说明符:表明该数组所属类型,即数组元素的类型

3、。(2)数组名)数组名:即数组的名称,其命名方法同变量名遵循标识符定名规则。遵循标识符定名规则。例如:例如:int a10;它表示数组名为它表示数组名为a,此数组有,此数组有10个整型元素。个整型元素。3第第6 6章章 数组数组(3):下标运算符,可通过该运算符的个数反映出数组:下标运算符,可通过该运算符的个数反映出数组的维数。不能用圆括弧,下面用法不对:的维数。不能用圆括弧,下面用法不对:int a(10);(4)常量表达式:表示元素的个数,即数组长度。常量表达式常量表达式:表示元素的个数,即数组长度。常量表达式中可以包括常量和符号常量,不能包含变量。也就是说,中可以包括常量和符号常量,不能

4、包含变量。也就是说,c不不允许对数组的大小作动态定义,即数组的大小不依赖于程序运允许对数组的大小作动态定义,即数组的大小不依赖于程序运行过程中变量的值。例如,下面这样定义数组是不行的:行过程中变量的值。例如,下面这样定义数组是不行的:特点:特点:数组元素的个数必须是确定的数组元素的个数必须是确定的数组元素的类型必须一致数组元素的类型必须一致4第第6 6章章 数组数组下面是合法的数组定义下面是合法的数组定义:char str20;/*定义一个有定义一个有20个元素的字符型数组个元素的字符型数组str*/float score8;/*定义一个有定义一个有8个元素的浮点型数组个元素的浮点型数组sco

5、re*/#define N 5long dataN;/*定义一个有定义一个有5个元素的长整型数组个元素的长整型数组data*/short z4*N;/*定义了一个有定义了一个有20个元素的短整型数组个元素的短整型数组z*/其中其中的数组长度使用的是符号常量的数组长度使用的是符号常量 下面的定义是非法的:下面的定义是非法的:int n=10;char cn;/*数组长度不能使用变量数组长度不能使用变量*/char str;/*数组长度不确定数组长度不确定*/5第第6 6章章 数组数组例:试判断下列数组定义是否合法例:试判断下列数组定义是否合法:intstudent35;charname20;fl

6、oatscore35;#definestudent35floatn_studentstudent;intscore_studentstudent*3;intperson(10);intn=10,an;6第第6 6章章 数组数组一维数组一维数组在内存中的存放方式:在内存中的存放方式:数组定义以后,编译系统(计算机)将在内数组定义以后,编译系统(计算机)将在内存中开辟一块连续的存储单元用于存放数组元素存中开辟一块连续的存储单元用于存放数组元素(数组元素按数组下标从小到大连续存放)。数组元素按数组下标从小到大连续存放)。数数组名表示存储单元的首地址组名表示存储单元的首地址,存储单元的大小由,存储单元

7、的大小由数组的类型和数组的大小决定。数组的类型和数组的大小决定。例如例如 int a5;inta 4 a 3 a 2 a 1 a 0 2字节字节2字节字节2字节字节2字节字节2字节字节7第第6 6章章 数组数组a代表首地址(数组起始地址),每个元素字节数相同,因此,根据数组元素序号可以求得数组各元素在内存的地址,并可对数组元素进行随机存取。数组元素地址数组元素地址=数组名数组名+下标下标 即:即:数组元素地址数组元素地址=数组首地址+元素下标*sizeof(数组类型)设a的首地址为1000,数组a存储示意图如右图所示1006a0a1a2a3a4aa+1a+2a+3a+4内存1000a3的地址=

8、a+3即:a3的地址=1000+32=10068第第6 6章章 数组数组引用方式:引用方式:数组名数组名下标下标2、一维数组元素的引用、一维数组元素的引用说明:说明:下界下界 下标下标 上界;上界;下界下界0 0;上界整常量表达式;上界整常量表达式1 1。下标为整型表达式;下标为整型表达式;若有定义:若有定义:int a5;则数组则数组a的元素分别为的元素分别为:a0、a1、a2、a3、a4;但;但a5不是。不是。9第第6 6章章 数组数组一维数组元素引用的一维数组元素引用的规定:规定:数组必须先定义后使用。数组必须先定义后使用。数组元素只能逐个被引用,不能一次引用整数组元素只能逐个被引用,不

9、能一次引用整个数组。个数组。对数组中所有元素逐个引用时,通常可使用对数组中所有元素逐个引用时,通常可使用循环结构。循环结构。一个数组元素实质是一个变量,代表内存中的一个一个数组元素实质是一个变量,代表内存中的一个存储单元。引用后的数组变量也称下标变量。存储单元。引用后的数组变量也称下标变量。如:如:a0=5;a3=a1+4;aD-B=3;scanf(“%d”,&a4);10第第6 6章章 数组数组例例1:1:输入输入1010个整数,分别按顺序和逆序输出。个整数,分别按顺序和逆序输出。#include void main()int i,a10;printf(input 10 numbers:n)

10、;for(i=0;i10;i+)scanf(%d,&ai);printf(n);for(i=0;i=0;i-)printf(%d ,ai);程序的运行情况:程序的运行情况:input 10 numbers:1 2 3 4 5 6 7 8 9 101 2 3 4 5 6 7 8 9 10 10 9 8 7 6 5 4 3 2 1 11第第6 6章章 数组数组数组初始化数组初始化:指定义数组时对数组元素赋以初值。指定义数组时对数组元素赋以初值。3、一维数组的初始化、一维数组的初始化格式:格式:类型符类型符 数组名数组名表达式表达式初值表初值表;说明:说明:给全部元素赋初值。给全部元素赋初值。int

11、 a5=0,1,2,3,4;给部分元素赋初值。给部分元素赋初值。int b5=1,2,3;给全部元素赋初值时可不指定数组的长度。给全部元素赋初值时可不指定数组的长度。int a=1,2,3;但若被定义的数组长度与提供初值的个数不相同,则数但若被定义的数组长度与提供初值的个数不相同,则数组长度不能省略。例如,想定义数组长度为组长度不能省略。例如,想定义数组长度为10,就不能省略,就不能省略数组长度的定义,而必须写成数组长度的定义,而必须写成int a10=1,2,3,4,5;只初始化前只初始化前5个元素,后个元素,后5个元素为默认值。个元素为默认值。12第第6 6章章 数组数组例例2 2、数组初

12、始化与未初始化比较数组初始化与未初始化比较#include main()int i,a5=3,4,5,b5;printf(“narray a is:”)for(i=0;i5;i+)printf(“%6d”,ai);printf(“narray b is:”)for(i=0;i5;i+)printf(“%6d”,bi);运行结果:arrayais:34500arraybis:-321398401170454考虑:数组b的值的含义?13程序如下:main()int i;int i;int f int f2020=1=1,1;1;for(i=2 for(i=2;i20;i+)i20;i+)f fi

13、i=f=fi-2i-2+f+fi-1i-1;for(i=0;i20;i+)for(i=0;i20;i+)if(i%5=0)printf(if(i%5=0)printf(n);n);printf(%12d printf(%12d,f fi i););运行结果如下:11235813213455891442333776109871597258441816765例例1 1、用数组来处理求、用数组来处理求fibonaccifibonacci数列问题。数列问题。4、一维数组程序举例、一维数组程序举例14第第6 6章章 数组数组#define N 5#define N 5#include#include m

14、ain()main()int i,j,k,max,min;static int a5;int i,j,k,max,min;static int a5;for(i=0;i5;i+)scanf(%d,&ai);for(i=0;i5;i+)scanf(%d,&ai);max=min=a0;max=min=a0;/*/*假定第一个元素既是最大的,也是最小的假定第一个元素既是最大的,也是最小的*/j=k=0;j=k=0;/*/*对分别记录最大,最小元素下标的变量对分别记录最大,最小元素下标的变量j,kj,k初始化初始化*/for(i=0;i5;i+)for(i=0;i5;i+)if(maxai)if(m

15、axai)min=ai;k=i;else if(minai)min=ai;k=i;printf(max:a%d=%d,min:a%d=%d,j,max,k,min);printf(max:a%d=%d,min:a%d=%d,j,max,k,min);例例例例2 2 2 2、从键盘上输入、从键盘上输入、从键盘上输入、从键盘上输入5 5 5 5个数,输出最大、最小的元素个数,输出最大、最小的元素个数,输出最大、最小的元素个数,输出最大、最小的元素以及它们的下标以及它们的下标以及它们的下标以及它们的下标若输入若输入:8 2 312 0-108 2 312 0-10输出为输出为:max:a2=312,

16、min:a4=-10:max:a2=312,min:a4=-10 15第第6 6章章 数组数组例例3 3、将将1010个人员的考试成绩进行分段统计,考试成绩放在个人员的考试成绩进行分段统计,考试成绩放在a a数组中,各分数段的人数存到数组中,各分数段的人数存到b b数组中:成绩为数组中:成绩为6060到到6969的人数的人数存到存到b0b0中,成绩为中,成绩为7070到到7979的人数存到的人数存到b1b1,成绩为成绩为8080到到8989的的人数存到人数存到b2b2,成绩为成绩为9090到到9999的人数存到的人数存到b3b3,成绩为成绩为100100的的人数存到人数存到b4b4,成绩为成绩

17、为6060分以下的人数存到分以下的人数存到b5b5中。中。16第第6 6章章 数组数组void main()int i,a10;static int b6;printf(enter the score:n);for(i=0;i10;i+)scanf(“%d”,&ai);switch(ai/10)case 6:b0+;break;case 7:b1+;break;case 8:b2+;break;case 9:b3+;break;case 10:b4+;break;default:b5+;printf(the result is:);for(i=0;i6;i+)printf(%dt,bi);17

18、第第6 6章章 数组数组二、二维数组二、二维数组1、二维数组的定义和引用、二维数组的定义和引用1)二维数组的定义格式:)二维数组的定义格式:类型说明符类型说明符 数组名数组名整常量表达式整常量表达式1整常量表达式整常量表达式2 例:例:float a34,b510float a34,b510;2)存储方式:)存储方式:二维数组可看作特殊的一维数组;二维数组可看作特殊的一维数组;在计算机中二维数组的元素按行顺序存放。在计算机中二维数组的元素按行顺序存放。例例:int a23;int a23;它在内存情况它在内存情况:18第第6 6章章 数组数组3)二维数组的引用格式:)二维数组的引用格式:数组名

19、数组名下标下标1下标下标2注意:注意:0下标下标1常量表达式常量表达式1-1;0下标下标2常量表达式常量表达式2-1。例:例:a12a12a00a01a02a10a11a1219第第6 6章章 数组数组说明:说明:给全部元素赋初值。给全部元素赋初值。(1 1)分行初始化。如:)分行初始化。如:static static intint a34=1,2,3,4,5,6,7,8,9,10,11,12;a34=1,2,3,4,5,6,7,8,9,10,11,12;(2 2)按数组排列的顺序将所有数据写在一个花括号内,如:按数组排列的顺序将所有数据写在一个花括号内,如:static static int

20、int a34=1,2,3,4,5,6,7,8,9,10,11,12;a34=1,2,3,4,5,6,7,8,9,10,11,12;2、二维数组的初始化、二维数组的初始化二维数组初始化通常是按行进行的。二维数组初始化通常是按行进行的。格式:格式:类型符类型符 数组名数组名表达式表达式1表达式表达式2=初值表初值表;20第第6 6章章 数组数组说明:说明:给部分元素赋初值。给部分元素赋初值。static static intint a34=,1,0,6,0,0,11;a34=,1,0,6,0,0,11;0 1 0 0 0 1 0 0 0 6 0 0 0 6 0 0 0 0 11 0 0 0 11

21、 0给二维数组的全部元素赋初值,可以不指定第一维的给二维数组的全部元素赋初值,可以不指定第一维的长度,但第二维的长度不能省略。长度,但第二维的长度不能省略。static static intint 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;21第第6 6章章 数组数组 例例1 1、用如下的用如下的3333矩阵初始化数组矩阵初始化数组a33,a33,求求矩阵的转置矩阵。矩阵的转置矩阵。123147456258789369转置矩阵:是将原矩阵元素按行列互换形成的矩阵转置矩阵:是将原矩阵元素按行列互换形成的矩阵方法方法方法

22、方法1 1:转置矩阵是将原矩阵元素按行列互换形成的。:转置矩阵是将原矩阵元素按行列互换形成的。123147456258789369方法方法方法方法2 2 2 2:沿主对角线将对称位置元素互换即可。:沿主对角线将对称位置元素互换即可。主对角线22第第6 6章章 数组数组#include include main()main()int j,k;int j,k;int a33=1,2,3,4,5,6,7,8,9,b33;int a33=1,2,3,4,5,6,7,8,9,b33;for(j=0;j3;j+)for(j=0;j3;j+)for(k=0;k3;k+)for(k=0;k3;k+)bjk=a

23、kj;bjk=akj;for(j=0;j3;j+)for(j=0;j3;j+)for(k=0;k3;k+)for(k=0;k3;k+)printf(“%6d”,bjk);printf(“%6d”,bjk);printf(“n”);printf(“n”);23第第6 6章章 数组数组例例2 2:在:在N N行行M M列的二维数组列的二维数组x x中,找出数组的最大值以及此最大中,找出数组的最大值以及此最大值所在的行、列下标。值所在的行、列下标。#define N 2#define M 3#include stdio.hvoid main()int i,j,xNM,max,line,col;pri

24、ntf(input array numbers:n);for(i=0;iN;i+)for(j=0;jM;j+)scanf(%d,&xij);max=x00;line=col=0;for(i=0;iN;i+)for(j=0;jM;j+)if(maxxij)max=xij;line=i;col=j;printf(nmax=%dtline=%dtcol=%dn,max,line,col);24第第6 6章章 数组数组程序运行情况:程序运行情况:input array numbers:12 3 4-5 67 89 10 11 12 nmax=89 line=1 col=225第第6 6章章 数组数组例

25、例3 3:有一个班共:有一个班共3030个学生,已知每个学生有个学生,已知每个学生有5 5门课程的成绩,门课程的成绩,要求输出平均成绩最高的学生的成绩及序号。要求输出平均成绩最高的学生的成绩及序号。#define N 30#define M 5#include stdio.hvoid main()int i,j,scoreNM,sum,aveN,max=0,m=0;printf(input array numbers:n);for(i=0;iN;i+)for(j=0;jM;j+)scanf(%d,&scroreij);for(i=0;iN;i+)sum=0;for(j=0;jM;j+)sum+=scoreij;avei=(float)sum/M;if(maxavei)max=avei;m=i;printf(nmax=%dtm=%dn,max,n);26第第6 6章章 数组数组小结小结 一一维维数数组组的的定定义义、引引用用、初初始始化化和和数数组组作作为为函函数参数数参数 二维数组的定义、引用、初始化二维数组的定义、引用、初始化 作业:作业:P167 1,3,5 P167 1,3,527

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com