(中职)C语言程序设计案例教程 二维数组ppt课件

上传人:仙*** 文档编号:248345033 上传时间:2024-10-23 格式:PPTX 页数:29 大小:5.96MB
返回 下载 相关 举报
(中职)C语言程序设计案例教程 二维数组ppt课件_第1页
第1页 / 共29页
(中职)C语言程序设计案例教程 二维数组ppt课件_第2页
第2页 / 共29页
(中职)C语言程序设计案例教程 二维数组ppt课件_第3页
第3页 / 共29页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,YCF,正版可修改,PPT,(中职)C语言程序设计案例教程 二维数组ppt课件,二维数组,CONTENTS,目 录,提出问题 引入新课,自主学习 明确考点,案例分析 交流提升,仿真演练 体验探索,提出问题 引入新课,PART,01,1、数学中的行列式是如何描述的?,2、思考:一个学习小组有5个人,每个人有三门课的考试成绩。如何求全组分科的平均成绩和各科总平均成绩,如下表格中。,提出问题 引入新课,思考,张,王,李,赵,周,Math,85,61,59,85,76,C,75,65,63,87,77,Html,92,71,70,90,85,自主学习 明确考点,PART 02,二维数组的定义格式为:, ;,考点一:二维数组的定义,说明:,(1)确定二维数组的,行数,;确定二维数组的,列数,;,(2)二维数组中元素的存储和排列的顺序是:,先存放第一行的元素,再存放第二行的元素,也就是整体,按行从上至下,存放,行内又按从左至右存放,依次类推;,(3)二维数组行列长度与行列标号存在什么关系?,二维数组的行下标和列下标都,从0开始编号,,行、列下标的最大值均比定义的行数、列数少1。,二维数组的元素个数等于总行数与总列数之积。,例如:int a34;,定义名称为b的整型二维数组,数组分为3行4列,共有3412个元素,考点一:二维数组的定义,说明了一个三行四列的数组,数组名为a,其下标变量的类型为整型。该数组的下标变量共有12个,即:各元素的排列顺序依次为:,a00,a01,a02,a03,a10,a11,a12,a13,a20,a21,a22,a23,二维数组初始化与一维数组类似,二维数组可按行分段赋值,也可连续赋值。,例如对数组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维的长度可以确定第一维的长度。,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、数组是一种构造类型的数据。二维数组可以看作是由,一维数组的嵌套,而构成的。设一维数组的每个元素都又是一个数组,就组成了二维数组。当然,前提是各元素类型必须相同。根据这样的分析,一个二维数组也可以,分解为多个一维数组,。语言允许这种分解。,如二维数组a34,可分解为三个一维数组,其数组名分别为:,a0,a1,a2,对这三个一维数组不需另作说明即可使用。这三个一维数组都有4个元素,例如:一维数组a0的元素为a00,a01,a02,a03。,必须强调的是,在定义了a为二维数组以后,,a0,a1,a2是对应行的数组名,,是三个一维数组。,考点二:二维数组的初始化,考点三:二维数组元素的使用,二维数组的元素也称为,双下标变量,,其表示的形式为:,下标表达式1下标表达式2,其中下标为整型常量或整型表达式,表示该元素在数组中的位置,且行、列下标都是,从0开始,编号,行下标和列下标的最在值无比定义的行数、列数少1。,例如: int a45;,则a34表示a数组第三行第四列的元素。,说明:,(1)数组必须,先定义后引用,,并且只能引用数组元素而不能一次引用整个数组。,(2)对二维数组的所有元素进行处理(数组元素的输入输出),常与循环语句相配合,进行逐行逐列扫描控制,一般分为两层,外层循环控制行的扫描,设置行下标为循环变量,内层循环控制行内列的扫描,设置列下标变量作为循环变量,完成行内每列元素的控制。,【例1】,一个学习小组有5个人,每个人有三门课的考试成绩。求全组分科的平均成绩和各科总平均成绩。,考点三:二维数组元素的使用,解析:,可设一个二维数组a53存放五个人三门课的成绩。再设一个一维数组v3存放所求得各分科平均成绩,设变量average 为全组各科总平均成绩。编程如下:,张,王,李,赵,周,Math,85,61,59,85,76,C,75,65,63,87,77,Html,92,71,70,90,85,main(), int i,j;,float s=0,average,v3,a53;,printf(input scoren);,for(i=0;i3;i+), for(j=0;j5;j+),scanf(%f,s=s+aji;,/,求总分,vi=s/5;,/,求平均成绩,并把平均成绩放入数组,V,中,s=0;,/,下个学生的总分要从,0,开始,average =(v0+v1+v2)/3;,printf(math:%fn c,l,anguag:%fnhtml:%fn,v0,v1,v2);,printf(total:%fn, average );,考点三:二维数组元素的使用,运行结果为:,input score,80 61 59 85 76,75 65 63 87 77,92 71 70 90 85,math:72.199997,c languag:73.400002,html:81.599998,total:75.733330,【例2】,数组元素的转置问题:形成一个3行4列数组,将一个3行4列数组转置后输出。,考点三:二维数组元素的使用,main( ), int a34,b43;,int i,j;,for(i=0;i3;i+),for(j=0;j4;j+), scanf(%d,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),考点三:二维数组元素的使用,本题的编程思路是,在数组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,bi);,printf(n);,案例分析 交流提升,PART 03,【例1】、分析以下程序的运行后的输出结果,#include,main(), 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】、分析以下程序的运行后输出结果,#include,main(), 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 (j=1 ; j6 ; j+) printf(%2d,aij) ;,printf(n);,getch();,仿真演练,体验探索,PART 04,1、以下能对二维数组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,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、有以下程序,#include,main(), 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);,若要按以下形式输出数组右上半三角,1 2 3 4,6 7 8,11 12,16,则在程序下划线处应填入的是( ),A)i-1B)iC)i+1D)4-i,5、阅读以下程序,其输出结果是( )。,#include,main(), 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中并按矩阵形式输出,请填空使程序完整。,提示:,分析:两个矩阵相乘的条件是前一个矩阵的列数和后一个矩阵的行数相等,乘积仍然是矩阵。即若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矩阵的各元素。,#include,main(), int a32=1,2,3,4,5,6, b23=7,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】,求一个矩阵主辅对角线元素之和。,以4*4矩阵为例,参考源程序如下:,main(),int i=0,j=0,a44,s1,s2;,for(i=0;i4;i+),for(j=0;j4;j+) scanf(%d,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=102,1 2 3 4,5 6 7 8,9 10 11 12,13 14 15 16,二维数组,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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