《C语言学习与应用》教学课件08二维数组操作.pdf
《《C语言学习与应用》教学课件08二维数组操作.pdf》由会员分享,可在线阅读,更多相关《《C语言学习与应用》教学课件08二维数组操作.pdf(62页珍藏版)》请在咨信网上搜索。
1、C语言学习与应用教学课件任务说明学习二维数组的定义,数组元素的引用、遍历和整齐 化输出的方法,在此基础上掌握批量数据的程序设计。了解二维数组的定义和下标变量的范围。掌握二维数组元素和地址的多种表示方法。掌握二维数素元素的遍历方法。掌握二维数组输出函数的编写。了解针对二维数组操作的函数的编写。0能够用宏定义二维数组的范围。C能够定使用指针变量遍历二维数组。0能够编写对二维数组操作的函数。0能够排查有关二维数组程序设计中的物理和逻辑错场0能够自由地书写二维数组操作的函数和主函数。01,二维数组的定义和初始化1.二维数组的定义二维数组就是若干个一维数组,对二维 数组的操作就是多次对一维数组的操作,-
2、维数组的遍历是一层循环,二维数组的操作 就是循环的嵌套了。1.二维数组的定义int a34;定义了一个名为a的二维数组,在内存中占有12个连续的存储单元,顺序是a00,a01,a02,a03,a10,a11.a23,如图81所不。图81二维数组存储示意图a00aOla02a03,国网mmmramma20a2la22a23可以将二维数组理解为一个矩阵,本例是3行4列的矩阵,行下标的变化范围是。2,列下标的变化范围是03。微课学习任务八二维数组操作_多科成绩统计(tfl知做而效传Mt二维数组的定义2,二维数组元素的引用如有定义double w 4 :则w 1 0.w i j、w i+j k 等均是
3、合法的引用,只要有两个方括号,方 括号中的表达式值为整数且在允许的范围内 即可。3.二维数组的初始化int a33=1525452;只给前两行的前两个元素赋值,其余元素均为0。int a4 3=1,2,4,5;按存储顺序给a00,a01,a02,分别赋值 1、2、4、5,其余元素值均为0。int a3=152535455;可以省略第一个方括号中的常量表达式,不能省略第二个方括号中 的常量表达式,本例中第一个方括号中的隐含值是2。应用举例8TB三维数组的基本操作输入和输出J#include nstdio.hn#include stdlib.h#define M3 用宏定义二维数组的行数#defi
4、ne N4 用宏定义二维数组的列数void main()(intaMN,M;for(i=0;iM;i+)对二维数组搜一遍,是两层循环for(j=0;jN;j+)aij=rand()%100;为二维数组元素赋099的随机值 for(i=0;iM;i+)应用举例8Tg二维数组的基本操作输入和输出4for0=O;jN;j+);priiC%3d%矶HUD;printf(n nn);每输出一行换一行getchar(程序输出:41 67 34 069 24 78 5862 64 5 45将程序代码补充完整,输 出3行3列的方阵。.课堂思考:问题8-1#include wstdio.hn#define M3
5、void main()(int i J,a=4,9,2,3,7,8,1,6;电力力/电力,J?)色,】虫秀七/七力&七?虫,)包n普 黔力龄代工七物/立立,)虫虫,】黔电七/七包?)?)力?)?)力加金,:七?)野普,)七七?)&七,普力电f电电七包的急虫力电电)钞/钟电器的七旬毂电期电立,e龄和aeg?)粤力立立旬立色,】给安七电七旬七龄和,)七金虫,)七七?)电就,普I二维数组的地址和指针1.二维数组元素和地址的表示若有定义“int a 3 4则数组元素a i j的地址有 以下几种表示方法。)&a i O这前TT房法是最直基的薪j(2)a i+jo这种表示方法是将a i理解为一维数组 的数
6、组名,a i+j就是a i j的地址。1,二维数组元素和地址的表示,*(a+i)+jo这种表示方法将上面的a i表示为*(a+i)。&a 0 n 置&a 010+4*i-0向)数组是连续存彳诸?平起始位 j 就是&ai H oJa 0+4j a 0 ori+jo 行聂示方法中,&aoo就是J数组元素ai j有以下几种表示方法。*(a i J 演变而来9j)O这种|法由地址的第二谕表示方法*(*(a+i)+j)。这种表示方法由地址的第三种表示方法 演变而来。数组元素ai j有以下几种表示方法。(*(a+i)i 表示夕*(&a 01 种表示方?0!去演变而亍:种表示方法由出北的第四*(a 0+4*
7、i+j)。这种表示方法由地址的第五种表示 方法演变而来。O o这qa+i),引法将ai斗中的a I优先问题加上括号二维数组元素的地址表示2.二维数组中几个地址的区别如有定义“int a 3 4则a、a 0、&a 0 0都是这些连续存储单元的首地址,但它们的基类型不同,a 0和&a 0 0的基类型为1个整型的存储单元,而a 的基类型为4个整型的存储单元。&3 0 0+1和a 0+1中的1表示1个存储单兀,而 a+1中的1表示4个存储单元(4就是a 3 4中的每行元素 个数),如图8-2所示。aa0&a0 0 a0 0 aO+l&aOlaOl a0 2 a0 3a+1al&alOalOal+l a
8、ll al2 al3a+2a2&a20 a20 a2+l a2l a22 a23图8-2二维数组元素的地址3.用一维数组的指针访问二维数组元素因二维数组元素是连续存储,故可以当一维数组使用。可 以用与一维数组对应的指针访问二维数组元素。如有定义“int a 3 4,*p=a 0;,则p+1 是&a 0 1,*(p+5)就是a 1 1 o还可以给P赋&a 0 0、a 1、a 2,但不能给p 赋a,因为它们的基类型不同。4.专用于二维数组的指针如有定义“int a 3 4,*p 3,(*q)4 则p 0、P 1、P 2和q可理解为是二维数组的指针。uint a 3,*p;中,*p 3的方括号优先,
9、它定义了一个数组P 3,它的三个数组元素均是指针变量,当执行语句 ufor(i=0;i3;i+)p i=a i;后,p i j就是a i j 了uint a 3 4,(*q)4;中,(*q)4的小括号 优先,它定义了一个指针变量q,其基类型为4个整型的存储单 元,当执行语句uq=a;后,q i j就是a i j 了。03I二维数组名和指针数组为实参1.二维数组名作为实参int aMN;fun(a);/调用函数时,指针数组做实参对应的fun函数头部的书写形式为:fun(int sMN)或 fun(int s N)或 fun(int*s)No三种情况中,遮住最右面的N,其余部分与一维数组名作为 实
10、参时的书写形式一致。无论是哪种方式,形参都需开辟一个存储单 元用来接收传来的二维数组的首地址。微课学习任务八二维数组操作_多科成绩统计知3一虑效传搐二维数组名作为实参2.指针数组作为实参int aMN,*pM;for(i=0;i=i,从左上到右下的对角线的元 素下标是i=j,从右上到左下的对角线特征是i+j=M7 o微课学习任务八二维数组操作_多科成绩统计知M-四效传搐二维数组应用二维数组中一些元素的表示二维数组中一些元素的表示2.针对二维数组的操作应用举例82:求二维数组周边元素的平均值。对数组元素搜一遍,遇到周边元素累加并计算。#include stdio.h#include stdlib
11、.h#define M 3#define N 4double fun(int w 口 n)(int i,j,k=O;double ave=0;for(i=0;iM;i+)对二维数组搜一遍,遇到周边元素累加并计数for(j=0;jN;j+)if(i=0|i=M-l|j=0|j=N-l)ave+=w i j;k+;return ave/k;返回平均值)void main()(int a M N,ij;for(i=0;iM;i+)为二维数组元素赋值for(j=0;jN;j+)a i j=rand()%5 0;for(i=0;iM;i+)输出数组(for(j=0;jN;j+)printf(”3d”,a
12、 i j);printf(n nn);)printf(ave=%f nn,fun(a);getchar();)输出:4 1 17 34 019 24 28 812 14 5 4 5 ave=19.5 00000将N行N列的方阵左下三角元素置0,请将程序代码补 充完整。#include stdio.h#include stdlib.h#define N 5void fun(int w N)为数组左下三角元素置0void out(int w N)输出数组void main()int aNNJJ;for(i=0;iN;i+)为二维数组元素赋值for(j=0;jN;j+)aij=rand()%5 0;
13、out(a);输出数组元素fun(a);为左下三角数组元素置0out(a);再次输出数组元素getchar();应用举例8 TM方阵的转置J搜索不包括对角线元素在内的左下三角元素,与对应元素交换,即 与 ajai交换。#include stdio.h#define M 3void arrout(int arrayM)(int i,j;for(i=0;iM;i+)(for(j=0;jM;j+)printf(%3d n,array i j);printf(nn);应用举例8 TM方阵的转置Jvoid fun(int arrayMM)rintfor(i=0;iM;i+)fora=0;ji;j+)内层
14、循环次数用i控制t=arrayij;arrayij=arrayji;arrayji=t;应用举例8 TM方阵的转置Jvoid main()int 2,3,4,5,6,7,8,9,i,j;printf(nprmtl:nn);arrout(a);输出原数组fun(a);调用fun函数实现转置printf(nprmt2:iin);arrout(a);扁出转置后的数组getchar();printl:12 34 5 6 7 8 9 print2 14 72 5 8 3 6 93,将二维数组看做若干个一维数组应用举例8-4:将二维数组每行元素的平均值放在b数组中。将二维数组看做由M个一维数组组成,对每个
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C语言学习与应用 语言 学习 应用 教学 课件 08 二维 数组 操作
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【曲****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【曲****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。