二维数组教学教学课件.pptx

上传人:春哥&#****71; 文档编号:12724300 上传时间:2022-04-25 格式:PPTX 页数:28 大小:5.26MB
返回 下载 相关 举报
二维数组教学教学课件.pptx_第1页
第1页 / 共28页
二维数组教学教学课件.pptx_第2页
第2页 / 共28页
点击查看更多>>
资源描述

《二维数组教学教学课件.pptx》由会员分享,可在线阅读,更多相关《二维数组教学教学课件.pptx(28页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、CONTENTS 目 录提出问题 引入新课自主学习 明确考点案例分析 交流提升仿真演练 体验探索提出问题 引入新课PART 011、数学中的行列式是如何描述的?2、思考:一个学习小组有5个人,每个人有三门课的考试成绩。如何求全组分科的平均成绩和各科总平均成绩,如下表格中。提出问题 引入新课思考张王李赵周Math8561598576C7565638777Html9271709085自主学习 明确考点PART 02二维数组的定义格式为: ;考点一:二维数组的定义说明:(1)确定二维数组的行数;确定二维数组的列数;(2)二维数组中元素的存储和排列的顺序是:先存放第一行的元素,再存放第二行的元素,也就

2、是整体按行从上至下存放,行内又按从左至右存放,依次类推;(3)二维数组行列长度与行列标号存在什么关系? 二维数组的行下标和列下标都从0开始编号,行、列下标的最大值均比定义的行数、列数少1。二维数组的元素个数等于总行数与总列数之积。例如:int a34;定义名称为b的整型二维数组,数组分为3行4列,共有3412个元素考点一:二维数组的定义说明了一个三行四列的数组,数组名为a,其下标变量的类型为整型。该数组的下标变量共有12个,即:各元素的排列顺序依次为:a00,a01,a02,a03a10,a11,a12,a13a20,a21,a22,a23二维数组初始化与一维数组类似,二维数组可按行分段赋值,

3、也可连续赋值。例如对数组a53:(1)按行分段赋值可写为: int a53= 80,75,92,61,65,71,59,63,70,85,87,90,76,77,85 ;(2)按行连续赋值可写为: int a53= 80,75,92,61,65,71,59,63,70,85,87,90,76,77,85; 这两种赋初值的结果是完全相同的。考点二:二维数组的初始化说明:1、可以只对部分元素赋初值,未赋初值的元素自动取0值。 例如:int a33=0,1,0,0,2,3;赋值后的元素值为: 2、如对全部元素赋初值,可以省略第一维的定义,但不能省略第二维的定义。系统根据初始化的数据个数和第2维的长度

4、可以确定第一维的长度。int a 3= 1,2,3,4,5,6;a数组的第一维的定义被省略,初始化数据共6个,第二维的长度为3,即每行3个数,所以a数组的第一维是2。考点二:二维数组的初始化一般,省略第一维的定义时,第一维的大小按如下规则确定:初值个数能被第二维整除,所得的商就是第一维的大小;若不能整除,则第一维的大小为商再加1。例如,int a 3= 1,2,3,4;等价于:int a23= 1,2,3,4; 例如: int a33=1,2,3,4,5,6,7,8,9;可以等价为:int a3=1,2,3,4,5,6,7,8,9;4、数组是一种构造类型的数据。二维数组可以看作是由一维数组的嵌

5、套而构成的。设一维数组的每个元素都又是一个数组,就组成了二维数组。当然,前提是各元素类型必须相同。根据这样的分析,一个二维数组也可以分解为多个一维数组。语言允许这种分解。如二维数组a34,可分解为三个一维数组,其数组名分别为:a0a1a2对这三个一维数组不需另作说明即可使用。这三个一维数组都有4个元素,例如:一维数组a0的元素为a00,a01,a02,a03。必须强调的是,在定义了a为二维数组以后,a0,a1,a2是对应行的数组名,是三个一维数组。考点二:二维数组的初始化考点三:二维数组元素的使用二维数组的元素也称为双下标变量,其表示的形式为: 下标表达式1下标表达式2其中下标为整型常量或整型

6、表达式,表示该元素在数组中的位置,且行、列下标都是从0开始编号,行下标和列下标的最在值无比定义的行数、列数少1。例如: int a45;则a34表示a数组第三行第四列的元素。说明:(1)数组必须先定义后引用,并且只能引用数组元素而不能一次引用整个数组。(2)对二维数组的所有元素进行处理(数组元素的输入输出),常与循环语句相配合,进行逐行逐列扫描控制,一般分为两层,外层循环控制行的扫描,设置行下标为循环变量,内层循环控制行内列的扫描,设置列下标变量作为循环变量,完成行内每列元素的控制。【例1】一个学习小组有5个人,每个人有三门课的考试成绩。求全组分科的平均成绩和各科总平均成绩。考点三:二维数组元

7、素的使用解析:解析:可设一个二维数组a53存放五个人三门课的成绩。再设一个一维数组v3存放所求得各分科平均成绩,设变量average 为全组各科总平均成绩。编程如下:张王李赵周Math8561598576C7565638777Html9271709085main() int i,j; float s=0,average,v3,a53; printf(input scoren); for(i=0;i3;i+) for(j=0;j5;j+) scanf(%f,&aji); s=s+aji;/求总分 vi=s/5;/求平均成绩,并把平均成绩放入数组V中 s=0;/下个学生的总分要从0开始 avera

8、ge =(v0+v1+v2)/3; printf(math:%fn c languag:%fnhtml:%fn,v0,v1,v2); printf(total:%fn, average );考点三:二维数组元素的使用运行结果为:input score80 61 59 85 7675 65 63 87 7792 71 70 90 85math:72.199997c languag:73.400002html:81.599998total:75.733330【例2】数组元素的转置问题:形成一个3行4列数组,将一个3行4列数组转置后输出。考点三:二维数组元素的使用main( ) int a34,b4

9、3; int i,j; for(i=0;i3;i+) for(j=0;j4;j+) scanf(%d,&aij); bji=aij; printf(数组a:n); for(i=0;i3;i+) for(j=0;j4;j+) printf(%4d,aij); printf(n); printf(数组b:n); for(i=0;i4;i+) for(j=0;j3;j+) printf(%4d,bij); printf(n); 【例3】在二维数组a中选出各行最大的元素组成一个一维数组b。a=( 3 16 87 65 4 32 11 108 10 25 12 37)b=(87 108 37)考点三:二

10、维数组元素的使用本题的编程思路是,在数组A的每一行中寻找最大的元素,找到之后把该值赋予数组B相应的元素即可。程序如下: main() int a4=3,16,87,65,4,32,11,108,10,25,12,27; int b3,i,j,k; for(i=0;i=2;i+) k=ai0; for(j=1;jk) k=aij; bi=k; printf(narray a:n); for(i=0;i=2;i+) for(j=0;j=3;j+) printf(%5d,aij); printf(n); printf(narray b:n); for(i=0;i=2;i+) printf(%5d,b

11、i); printf(n);案例分析 交流提升PART 03【例1】、分析以下程序的运行后的输出结果#includemain() static int m,n,k,b66; b01=1; for(m=1;m6;m+) for(n=1;n=m;n+) bmn=bm-1n-1+bm-1n; printf(%-5d,bmn); printf(n); 【例2】、分析以下程序的运行后输出结果#includemain() int a66,i,j ; for (i=1; i6 ; i+) for (j=1 ; j6 ; j+) aij=(i/j)*(j/i) ; for (i=1;i6 ; i+) for

12、(j=1 ; j6 ; j+) printf(%2d,aij) ; printf(n); getch(); 仿真演练,体验探索PART 041、以下能对二维数组a进行正确初始化的语句是( )。A)int a2=1,0,1,5,2,3 ; B)int a3=1,2,3,4,5,6 ;C)int a24=1,2,3,4,5,6 ;D)int a3=1,0,1,1,1 ;2、)以下能正确定义二维数组的是( )A)int a3;B)int a3= 2*3;C)int a3=;D)int a23=1,2,3,4; 3、以下程序运行后的输出结果是 _ 。 main() int a44=1,2,3,4,5,

13、6,7,8,11,12,13,14,15,16,17,18;int i=0,j=0,s=0; while(i+4) if(i=2|i=4) continue; j=0; do s+= aij; j+; while(j4); printf(%dn,s);4、有以下程序#includemain() int num44=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,i,j; for(i=0;i4;i+) for(j=1;j=i;j+)printf(%4c, ); for(j= ;j4;j+)printf(%4d,numij); printf(n); 若要按以下形式输出

14、数组右上半三角1 2 3 4 6 7 8 11 12 16则在程序下划线处应填入的是( )A)i-1B)iC)i+1D)4-i5、阅读以下程序,其输出结果是( )。#includemain() int i,j, a 3=1,2,3,4,5,6,7,8,9; for ( i=0; i3; i+ ) for ( j=i+1; j3; j+ ) aji=0; for ( i=0; i3; i+ ) for ( j=i+1; j3; j+ ) printf(%d,aij); printf(n); 6、以下程序是求矩阵a,b的乘积,结果存放在矩阵C中并按矩阵形式输出,请填空使程序完整。提示:提示:分析:

15、两个矩阵相乘的条件是前一个矩阵的列数和后一个矩阵的行数相等,乘积仍然是矩阵。即若A矩阵有m行p列,B矩阵有p行n列,则它们的乘积C矩阵有m行n列。设A、B、C矩阵用3个2维数组表示:A数组有3行2列,B数组有2行3列,则C数组有3行3列。如:C00= A00*B00+A01*B10;C01= A00*B01+A01*B11;C02= A00*B02+A01*B12;C10= A10*B00+A11*B10; 依次类推即可求出C矩阵其它元素的值。从以上算法可以看出,需要3重循环(i、j、k)才能计算C矩阵的各元素。#includemain() int a32=1,2,3,4,5,6, b23=7

16、,8,9,10,11,12; int i,j,k,s,c33; for (i=0; i3; i+) for (j=0; j3; j+) s=0; for (k=0; k2; k+) s+=aik*bkj; cij=s; for (i=0; i3; i+) for (j=0; j3; j+) printf(%6d,cij); printf(n); 编程填空练习:【例1】求一个矩阵主辅对角线元素之和。 13 14 15 16 1 2 3 4 5 6 7 8 9 10 11 12 以4*4矩阵为例,参考源程序如下: main() int i=0,j=0,a44,s1,s2; for(i=0;i4;i

17、+) for(j=0;j4;j+) scanf(%d,&aij); s1= + + + ; s2= + + + ; printf(s1=%d,s2=%dn,s1,s2); 【例2】求34矩阵的最小值,及其所在的位置(行号和列号)。main() int a4=2,-8,20,0,9,5,-38,-34,10,32,4,-3; int i,j,row,col,min; min=a00; row=0; col=0; for(i=0;i3;i+) for(j=0;jaij) min=aij; ; ; printf(min=%d,row=%d,col=%d,min,row,col);运行结果:min=-38,row=1,col=2【例3】计算44阶矩阵的周边元素值之和。main() int a44,i,j,sum; sum=0; for(i=0;i4;i+) for(j=0;j4;j+) scanf(%d, ); /*输入左图示数据*/ for(i=0;i4;i+) for(j=0;j4;j+) if( ) sum+=aij; printf(sum=%dn,sum);运行结果 :sum=1021 2 3 45 6 7 89 10 11 1213 14 15 16

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

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

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

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁