专题9 二维数组的定义与引用(课件)-山东省(春季高考)软件与应用技术类《C语言程序设计知识》考纲讲练测

| 38页
| 1人阅读
| 0人下载
精品

内容正文:

考纲讲练测 AI职教 zhijiao.xkw.com 专题9二维数组的定义与引用 山东省春季高考软件与应用技术类 得岗明本号到为山乐有身德、)界作等指用校术典《得寓得序会计用积号的场得》。产售 程■山质量看零专散件与用技术是专业号试关明(C得■理传设计分》国写。精在对标重用强周度点 是年其准位期.等表进这量量量交重静.然习三大纪装表学文特,些身九大装心乌节1专树接.进进 号海织植进,这其节,有想横树凯、望越均,进业小三立地,每这产修一感一雕国 县此数修与复更典,处力生女高层铺量自点, AI职教 zhijiao.xkw.com 酮 考点解读 考纲要求① 理解二维数组的定义及初始化 考纲要求② 掌握二维数组元素的引用 考查重点 两维长度须常量、下标从0起、行优先存放 考情分析二维数组是数组一章的重点,选择题与读程序题中出现较多 AI职教 zhijiao.xkw.com 鼠 思维导图 类型说明符数组名[行][列] 两维长度都必须是常量 数组的定义 元素在内存中按行优先存放 第二维长度永远不能省略 数组名[行标[列标,两个下标 元素的引用 行标0~M-1、列标0~N-1 二维数组 单个元素用法同普通变量 不能整体赋值与整体输入 的定义与引用 分行全部赋值、分行部分赋值 数组的初始化 按一维形式按行优先连续填 未赋值的元素一律自动为0 全部赋值时可省略第一维 外层管行、内层管列 行列统计先在内层前清零 数组与循环 对角线i==j与i+j==n-1 转置、杨辉三角、极值与下标 69 AI职教 zhijiao.xkw.com 鼠 知识梳理 从一行数据到一张表 维数组与二维数组的区别 比较项 维数组 ,一维数组只排一行 二维数组 下标个数 1个 2个 ·实际问题常是行列结构 形状 一排数据 行×列的表 ·成绩表、矩阵都是二维 定义示例 int a[4]; inta[3][4]: ·C语言支持多维数组 元素个数 4个 3X4=12个 ·三维以上较少用到 典型问题 求平均分 矩阵、成绩表 AI职教 zhijiao.xkw.com 知识梳理 二维数组的定义形式 程序段:几种合法的二维数组定义 int a[3][4]; ·类型说明符数组名[行][列] float scores[5][3]; ·第一个常量表示行数 double d[3][3]; ·第二个常量表示列数 /*第一个是行数,第二个是列数* ·两对括号都要写 /*inta[3][4]与inta[4][3]*/ ·最后以分号结束 /*元素个数相同、形状不同*/ AI职教 zhijiao.xkw.com 知识梳理 两维长度都必须是常量 程序段:合法的长度与非法定义 #define M 3 ·长度不能是变量 #define N 5 ·不允许动态定义数组 int c[M][N]; /*对:c[3][5]*/ ·可用基本常量3、4 ntb[2+1][2*2];/*对*/ ·可用符号常量M、N int n 3; ·可用常量表达式2*2 int d[n][4]; /*错:变量*/ inte[3][];/*错:二维不能省*/ AI职教 zhijiao.xkw.com 知识梳理 元素个数与占用字节 常见二维数组占多少字节 定义 个数 共计 ·元素个数等于行数乘列数 inta[3][4]: 12 48字节 ·3行4列共12个元素 float f[2][5]; 10 40字节 ·每个元素占4个字节 double d[3] 9 72字节 ·总字节数=12×4=48 [3]; ·占用空间与数值无关 intb[10][5]: 50 200字节 1ongL[4][2]: 8 32字节 AI职教 zhijiao.xkw.com 知识梳理 内存按行优先连续存放 inta[3][4];的存放顺序 ·先存第0行的全部元素 顺序 元素 偏移 1 a[o][o] 0 ·再存第1行、第2行 2 a[0][1] 4 ·元素前后两两紧挨着 3 a[o][2] 8 ·a[0][3]后面是a[1][0] 4 a[o][3] 12 ·偏移=(行×列数+列)×字节 5 a[1][0] 16 12 a[2][3] 44 AI职教 zhijiao.xkw.com 知识梳理 相当于多个一维数组 程序段:a、a[o]、a[o][o]的区别 inta[3][4]; ·整张表是一个二维数组 /米 a 整张表的名字、首地址*/ ·每一行就是一个一维数组 /*a[0] 第0行这一整行*/ ·行名a[0]、a[1]是地址 /*a[0][]第g行第g列的值*/ ·a[0][0]才是元素的值 /*a=b; 错:不能整体赋值* ·数组名都不能整体赋值 /*a[0]=b[0];错:行名也是地址*/ AI职教 zhijiao.xkw.com 知识梳理 元素的引用与两个下标 程序段:合法的引用形式 inta[3][4]; ·形式:数组名[行标][列标] a[0][8]=1; /*第1行第1列*/ 。两个下标各用一对括号 a[2][3]=12; *最后一个*∥ ·行标范围0M-1 a[i][j]=o; /*变量下标*/ ·列标范围0心N-1 a[i+1][j*2]=7;/*表达式*/ ·下标可以是整型表达式 /*行标日~2,列标日~3*/ AI职教 zhijiao.xkw.com 知识梳理 引用形式的正误 哪些写法是对的 写法 对不对 ·两个下标必须各一对括号 a[1][2] 对 。a[1,2]是逗号表达式 a[i][j] 对 ·a[1]取到的是一整行 a[i+1][j*2] 对 ·a[1][2][3]多写-个下标 a[1,2] 错 ·圆括号会被当成函数调用 a[1] 错(整行) a[1][2][3] 错(越界) AI职教 zhijiao.xkw.com 知识梳理 元素当变量、数组不能整体操作 程序段:逐个元素输入才是对的 inta[3][4],i,j; ·单个元素用法同普通变量 for(i=0;1<3;i++) ·能赋值、能运算、能输入 for(j=0;j<4;j++) 。scanf中要写取地址符 scanf("%d",&a[i][j]); ·整个数组不能整体赋值 /*a=0; 错:整体赋值*/ ·不能一条scanf输全部 /*一条scanf只读一个元素*/ AI职教 zhijiao.xkw.com 知识梳理 分行赋值:清楚不错位 程序段:分行全部赋值与部分赋值 inta[2][3]={{1,2,3},{4,5,6}}; ·外层花括号包整张表 /*第一行123,第二行456*/ ·里面每对花括号是一行 intb[2][3]={{1},{4,5}}; ·分行全部赋值最直观 /*b[0][0]=1,b[1][0]=4*/ ·分行部分赋值缺的补0 /*b[1][1]=5,其余为0*/ ·跳过某行写一对空括号 intc[3][2]={{1},{,{4,5}}; /*第二行为0,用)占位*/ AI职教 zhijiao.xkw.com 知识梳理 一 维形式赋值与省略第一维 程序段:按一维形式赋值与省略第一维 inta[2][3]={1,2,3,4,5,6}; 。一层花括号按行优先连续填 /*行优先依次填:123/456*/ ·每满一行就换到下一行 intb[][3]={1,2,3,4,5,6}; ·全部赋值可省第一维长度 /*6÷3=2行,第二维必须写3*/ ·第二维长度任何情况不能省 intc[][3]={1,2},{4,5,6}}; ·初值个数不能超过总数 /*两对花括号=2行*/ AI职教 zhijiao.xkw.com 知识梳理 初始化与定义中的易错写法 六种易错写法 ·{0} 才是整表清零 写法 结果 inta[2][3]={0}; 全为0(对) ·一行初值不能超过列数 {{1,2,3,4},{5}} 编译报错 ·初值总数不能超过元素数 inta[2][]; 编译报错 ·定义之后不能再整体赋值 a={o}; 编译报错 ·第二维长度始终不能省 {1},{4,5}] 其余自动为0 inta[2][3];直接用 值不确定 AI职教 zhijiao.xkw.com 知识梳理 双重循环:外层行、内层列 程序段:二维数组的遍历与求和 int a[3][4],i,j,sum =0; ·外层管行标i for(i=0;1<3;i++) 。内层管列标j for(j=8;j<4;j++) ·条件写i<M、j<N scanf("%d",&a[i]j]); ·每行结束要换行输出 for(i=0;i<3;i++) ·按列访问只要对调两层 for(j=0;j<4;j+) sum +a[i][j]; AI职教 zhijiao.xkw.com 知识梳理 行列统计、对角线与典型应用 五个必背写法 ◆每行之和:外层行、内层列,先清零 。每行求和先进内层清零 ◆ 每列之和:外层列、内层行,先清零 ·每列求和外层换成列标 ◆最大值:先取首元素,记下i、j 。主对角线=j ◆两条对角线:i=j与i+j=n-1 ·副对角线i+j=n-1 ◆转置:只换j>i的上三角 ·转置只处理上三角j>i AI职教 zhijiao.xkw.com 背诵环节 1.二维数组的定义方式是什么?两个中括号里的常量分别表示什么? 【答案】类型说明符数组名[常量表达式们[常量表达式2];第一个常量是行数,第二个是 列数,二者都必须是常量表达式、都不能含变量,第二维长度任何时候都不能省略。 2.inta[3][4];定义了什么样的数组?共有多少个元素?行标、列标各是 什么范围? 【答案】定义了一个3行4列的二维数组,共有3×4=12个元素;行标范围0~ 2,列标范围0~3,元素个数=行数×列数。 AI职教 zhijiao.xkw.com 背诵环节 3.二维数组在内存中是怎样存放的?元素a[i门][j]的偏移量怎么算? 【答案】按行优先存放:先存第0行,再存第1行,依次类推;元素前后紧挨着。偏移量 =(行标×列数十列标)×每个元素的字节数。 4.二维数组元素的引用形式是什么?a[1们与a[1们[0]有什么区别? 【答案】形式是数组名[行标][列标],两对方括号都要写。a[1]表示第1行这一整行 (一维数组名、地址常量),a[1们[0]才是这一行第1个元素的值。 AI职教 zhijiao.xkw.com 背诵环节 5.二维数组的初始化有哪四种方式?未赋初值的元素是多少? 【答案】分行全部赋值、分行部分赋值、按一维数组形式赋值、省略第一维长度;无论用哪 种方式,没有给初值的元素一律自动为0。 6.什么情况下可以省略二维数组第一维的长度?为什么第二维不能省? 【答案】省略第一维长度时不必给全部元素赋值:只要第二维长度写明,系统按初值个数或 花括号层数就能算出需要几行,初值没填满也可以省;系统确定的是行数,列数是定义时在 第二维里已经写明的固定值,所以第二维长度任何时候都不能省。 AI职教 zhijiao.xkw.com 鼠 常考题 1.定义二维数组时,两个中括号里都必须是常量表达式。() 【答案】√ 【解析】两维长度都必须是常量。 2.下列二维数组的定义中,合法的是()。 A、inta[3][]; B、inta[][4]={1,2,3,4}}; C int n=3;int a[n][4] D、inta(3)(4); 【答案】B 【解析】省略第一维要给全初值。 AI职教 zhijiao.xkw.com 鼠 常考题 3.执行inta[3][4];之后,能够引用的最大行标是3。() 【答案】× 【解析】行标最大是3-1=2。 4.执行inta[2][3]={1,2},{4};之后,a[1][2]的值是0。() 【答案】√ 【解析】没给初值的元素自动为0。 AI职教 zhijiao.xkw.com 酮 常考题 5.执行inta[3][4];之后,该数组的元素个数是()。 A、7个 B、12个 0、34个 D、4个 【答案】B 【解析】3×4=12个元素。 6.下列对二维数组元素的引用中,错误的是()。 A、a[1][2] B、a[i][j] C、a[1,2] D、a[i+1][j*2] 【答案】C 【解析】两个下标要各用一对方括号。 AI职教 zhijiao.xkw.com 酮 常考题 7.定义了inta[4][5];之后,最后一个元素是a[3][]。 【答案】4 【解析】最大列标=列数-1=4。 8.执行inta[2][3]={1,2},{4,5,6};后,a[0][2]的值是 【答案】0 【解析】第一行缺的元素自动为0。 AI职教 zhijiao.xkw.com 模拟题 1.(单项选择题)若有inta[4][5];,则该数组占用的字节数是( )。 A、20 B、40 C、80 D、100 【答案】C 【解析】4×5×4=80字节。 2.(判断题)inta[2][3];与inta[3][2];两个数组占用的字节数相同。 【答案】√ 【解析】元素个数都是6,占字节相同。 A职教 zhijiao.xkw.com 模拟题 3.(单项选择题)执行inta[2][3]={1,2,3,4,5,};后,a[1][1]的值 是()。 A、2 B、4 0、5 D、6 【答案】C 【解析】行优先连续填:a[1][1]=5。 4.(判断题)二维数组可以用一条 scanf语句整体输入全部元素。 () 【答案】X 【解析】只能用双重循环逐个输入。 AI职教 zhijiao.xkw.com 模拟题 5.(单项选择题)要定义3行4列的整型数组, 正确的写法是()。 A、inta[3,4];B、inta[3][4];C、inta[4][3];D、inta[3][3]; 【答案】B 【解析】行数在前、列数在后。 6.(填空题)执行inta[3][4]={1们,{2,3};后,a[2][0]的值是 【答案】0 【解析】整行没赋值,全部为0。 A职教 zhijiao.xkw.com 模拟题 7.(单项选择题)在inta[3][4];中,紧跟在a[0][3]后面存放的元素 是()。 A、a[0][4] B、a[1][0] 0、a[1][3] D、a[2][0] 【答案】B 【解析】行优先:第0行后接第1行。 8.(填空题)若inta[3][4];,则a[1][2]之前共有 个元素(不 含它本身)。 【答案】6 【解析】1×4+2=6个元素。 AI职教 zhijiao.xkw.com 鼠 模拟题 9.(单项选择题)若有inta[3][4;且i=1、j=2,则a[i][j]是 ()。 A、第1行第2列 B、第2行第3列 C、第2行第2列 D、第1行第3列 【答案】B 【解析】行标1是第2行,列标2是第3列。 AI职教 zhijiao.xkw.com 课堂练习 1.二维数组的行标和列标都从0开始。() 【答案】√ 【解析】行标、列标都从0起。 2.执行inta[2][3]={1,2,3},{4,5,6}};后,a[1][0]的值是4。 () 【答案】√ 【解析】第二行第一个元素是4。 69 AI职教 zhijiao.xkw.com 鼠 课堂练习 3.下列定义中,把第二维长度非法省略的是()。 A、inta[3][4]; B、inta[][4]={1,2,3,4}: c、inta[3][]; D、inta[2][2+2]: 【答案】C 【解析】第二维长度任何时候都不能省。 4.3阶方阵中,主对角线元素的下标满足的条件是()。 A、i==j B、i+j=2C、i>j D、i<j 【答案】A 【解析】主对角线:i=j。 69 AI职教 zhijiao.xkw.com 鼠 课堂练习 5.执行inta[3][4]={[1,2},{3};后,值为0的元素共有()。 A、6个 B、7个 C、8个 D、9个 【答案】D 【解析】12-3=9个元素为0。 6.执行inta[2][3]={0};之后,元素a[1][2]的值是 【答案】0 【解析】{0}使全部元素为0。 AI职教 zhijiao.xkw.com 课堂练习 7.按行优先输出inta[2][2]={{1,2},{3,4};的全部元素,顺序是 ()。 A、1234 B、1324 C、4321 D、1243 【答案】A 【解析】先第一行再第二行。 8.输出3行4列数组的全部元素时,内层循环的条件应写成 j水 【答案】4 【解析】列数4,条件写j<4。 g AI职教 zhijiao.xkw.com 课堂练习 9.3阶方阵副对角线上元素的行标与列标之和恒等于 【答案】2 【解析】副对角线:i+j==n1,即2。 10.执行inta[3][3]={1,2,3},{4,5,6},{7,8,9};后,a[1][2]-a[2] [1]是()。 A、-2 B、0 C、2 D、6 【答案】A 【解析】6-8=-2。 AI职教 zhijiao.xkw.com 酮 课堂练习 11·求3行4列数组每行元素之和,两层循环应分别控制()。 A、外层列、内层行 B、外层行、内层列 C、外层行、内层行 D、外层列、内层列 【答案】B 【解析】外层行、内层列,逐行求和。 AI职教 zhijiao.xkw.com 鼠 课堂练习 12.下表列出4段定义或语句,判断说法正确的是()。 序号 定义或语句 a[1][1们 1 inta[2][2]={{1,2},{3,4}}; 4 2 inta[2][3]={{1},{4,5}; 5 3 inta[☐[2]={1,2,3,4}; 4 4 inta[2][3]={1,2,3,4,5,6}; 5 A、序号1是3B、序号2是5C、序号3是2D、序号4是6 【答案】B 【解析】序号2的a[1][1]=5。 AI职教 zhijiao.xkw.com 课堂小结 1.二维数组的定义:类型说明符数组名[常量表达式][常量表达式2];行×列= 元素个数,两维长度都须常量、第二维不能省;行优先连续存放 2.二维数组元素的引用:数组名[行标][列标],行标0~M-1、列标0~N-1; 单个元素用法同普通变量,不能整体赋值与整体输入输出 3,二维数组的初始化:分行全部赋值、分行部分赋值、按一维形式赋值,未赋值元素自 动为0;全部赋值时可省略第一维,第二维不能省 4.二维数组与双重循环、典型应用与易错点:外层管行、内层管列,逐行统计先清 零;行和列和、极值与下标、对角线、转置、杨辉三角是典型考法 A职教 zhijiao.xkw.com ◆◆ 感谢观看

资源预览图

专题9 二维数组的定义与引用(课件)-山东省(春季高考)软件与应用技术类《C语言程序设计知识》考纲讲练测-第1页
1
专题9 二维数组的定义与引用(课件)-山东省(春季高考)软件与应用技术类《C语言程序设计知识》考纲讲练测-第2页
2
专题9 二维数组的定义与引用(课件)-山东省(春季高考)软件与应用技术类《C语言程序设计知识》考纲讲练测-第3页
3
专题9 二维数组的定义与引用(课件)-山东省(春季高考)软件与应用技术类《C语言程序设计知识》考纲讲练测-第4页
4
专题9 二维数组的定义与引用(课件)-山东省(春季高考)软件与应用技术类《C语言程序设计知识》考纲讲练测-第5页
5
专题9 二维数组的定义与引用(课件)-山东省(春季高考)软件与应用技术类《C语言程序设计知识》考纲讲练测-第6页
6

由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。