《(5.7.6)--第翻转课补充课件-13讲-数组(二)--二维数组.ppt》由会员分享,可在线阅读,更多相关《(5.7.6)--第翻转课补充课件-13讲-数组(二)--二维数组.ppt(25页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、C语言程序设计语言程序设计 The C Programming Language 第第13讲讲 数组(二)数组(二)二维数组二维数组-2-第第13讲讲 数组(二)数组(二)二维数组二维数组 解决问题 二维数组 作业布置 课堂练习教学总结 讲解实验-3-解决学生遇到的问题解决学生遇到的问题1.double x10;sizeof(x)/sizeof(x0)不知道是不知道是什么意思什么意思?2.例例5.7不清楚不清楚 sizeof 求所占字节数运算符例如:int a3;为a数组分配3个连续的存储单元(sizeof(int)3 个字节)又如:#define N 10 double bN;为b数组分配N
2、个连续的存储单元(sizeof(double)N 个字节)-4-int i=0,t=0,a10=1,2,3,4,5,6,7,8,9,10;t=a0;for(i=0;i9;i+)ai=ai+1;a9=t;for(i=0;i0;i-)bi=bi-1;b0=t;for(i=0;i10;i+)printf(%4d,bi);1 2 3 4 5 6 7 8 9 10bt1023456789101向右移动向右移动 改为改为bi+1=bi;应改为?应改为?【例例5.7】观察运行情况观察运行情况-6-讨论题讨论题5.45.4 数组元素中的值往前或往后移动两个位置时,数组元素中的值往前或往后移动两个位置时,应如何
3、改写程序?应如何改写程序?数组元素中的值往前或往后移动数组元素中的值往前或往后移动n(1n10)个位个位置时,又应如何改写程序?置时,又应如何改写程序?-7-5.3 5.3 二维数组二维数组有两个下标的数组有两个下标的数组a00a01a10a11a20a21123456a行下标行下标列下标列下标P139-8-【例例5.14】二维数组的示例。二维数组的示例。#include main()初始化二维数组初始化二维数组给第给第1行输入数据行输入数据b为为2行行5列数组列数组1 2 3 4 5 for(j=0;j5;j+)scanf(%d,&b0j);给第给第2行输入数据行输入数据6 7 8 9 0
4、for(j=0;j5;j+)scanf(%d,&b1j);int a32=1,2,3,4,5,6;int i=0,j=0,b25=0;-9-【例例5.14】二维数组的示例。二维数组的示例。#include main()for(j=0;j5;j+)scanf(%d,&b0j);for(j=0;j5;j+)scanf(%d,&b1j);int a32=1,2,3,4,5,6;int i=0,j=0,b25=0;for(i=0;i2;i+)for(j=0;j5;j+)scanf(%d,&bij);-10-【例例5.14】二维数组的示例。二维数组的示例。#include main()int a32=1
5、,2,3,4,5,6;int i=0,j=0,b25=0;for(i=0;i2;i+)for(j=0;j5;j+)scanf(%d,&bij);printf(Array a:n);外循环控制行外循环控制行 内循环控制列内循环控制列 给数组赋值给数组赋值-11-for(i=0;i3;i+)for(j=0;j2;j+)printf(%5d,aij);printf(n);printf(Array b:n);for(i=0;i2;i+)for(j=0;j5;j+)printf(%5d,bij);printf(n);按矩阵形式输出按矩阵形式输出时需加此行时需加此行-12-运行结果:运行结果:1 2 3
6、4 5 6 7 8 9 0 Array a:1 23 45 6Array b:1 2 3 4 56 7 8 9 0-13-int a32=1,2,3,4,5,6;表示表示a为二维数组名,为二维数组名,a含含6个元素个元素各元素均为整型各元素均为整型常用双层常用双层for处理二维数组处理二维数组 在内存中为在内存中为a分配分配6个连续的存储单元个连续的存储单元(按行)(按行)说明:说明:1 2 3 4 5 6a00 a01 a10 a11 a20 a21a-14-【例例5.15】打印如下杨辉三角形。打印如下杨辉三角形。1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10
7、 5 1-15-杨辉三角形有如下特点:杨辉三角形有如下特点:只有下半三角形有确定的值只有下半三角形有确定的值第第1列和对角线上的元素值都是列和对角线上的元素值都是1,其它元素值均是前一行同一列元素其它元素值均是前一行同一列元素与前一行前一列元素之和与前一行前一列元素之和 编程点拨编程点拨-16-#define N 6main()int aNN=0,i=0,j=0;for(i=0;iN;i+)for(i=2;iN;i+)for(j=1;ji;j+)for(i=0;iN;i+)for(j=0;j=i;j+)printf(%5d,aij);printf(n);给第一列、对角线赋给第一列、对角线赋1给
8、其它元素赋值给其它元素赋值ai0=aii=1;aij=ai-1j-1+ai-1j;-17-【例例5.16】定义定义46的实型数组,并将的实型数组,并将 各行前五列元素的平均值分各行前五列元素的平均值分 别放在同一行的第六列上。别放在同一行的第六列上。double a46;定义定义46的实型数组的实型数组计算第计算第一一行平均值行平均值sum=0;for(j=0;j5;j+)sum=sum+a 0 j;a 0 5=sum/5;二二11三三22四四33-18-for(i=0;i4;i+)计算第计算第一一行平均值行平均值sum=0;for(j=0;j5;j+)sum=sum+a 0 j;a 0 5=
9、sum/5;四四33各各ii 【例例5.16】定义定义46的实型数组,并将的实型数组,并将 各行前五列元素的平均值分各行前五列元素的平均值分 别放在同一行的第六列上。别放在同一行的第六列上。-19-main()double a46=0,sum=0;int i=0,j=0;for(i=0;i4;i+)for(j=0;j5;j+)aij=i*j+1;for(i=0;i4;i+)sum=0;for(j=0;j5;j+)sum=sum+aij;ai5=sum/5;for(i=0;i4;i+)for(j=0;j6;j+)printf(%5.1lf,aij);printf(n);-20-运行结果:运行结果
10、:1.0 1.0 1.0 1.0 1.0 1.0 1.0 2.0 3.0 4.0 5.0 3.0 1.0 3.0 5.0 7.0 9.0 5.0 1.0 4.0 7.0 10.0 13.0 7.0-21-课堂练习课堂练习程序编写:输入一个正整数程序编写:输入一个正整数n(1n6),再输再输入一个入一个n行行n列的矩阵,统计并输出该矩阵中列的矩阵,统计并输出该矩阵中非零元素的数量。(非零元素的数量。(2012年下半年等级考试年下半年等级考试笔试试题笔试试题)程序编写:输入程序编写:输入2个正整数个正整数m和和n(1m6,1n6),然后输入矩阵),然后输入矩阵a(m行行n列)中的列)中的元素,分别
11、计算并输出各行元素之和。元素,分别计算并输出各行元素之和。(2012年上半年等级考试笔试试题年上半年等级考试笔试试题)-22-教学总结教学总结本次课的讲授内容是:本次课的讲授内容是:1解决问题解决问题2.二维数组的概念和元素的引用二维数组的概念和元素的引用3按行输出二维数组中数据的方法按行输出二维数组中数据的方法4逐个访问二维数组各元素的思想逐个访问二维数组各元素的思想-23-作业布置作业布置1.抄写崔武子主编教材抄写崔武子主编教材P141 例例5.15和和例例5.162.编写编写我我廖雪峰廖雪峰主编教材中的主编教材中的第第67页第页第8题;题;第第9题为选作题。参考答案请查看第题为选作题。参考答案请查看第173页至页至174页页。预习预习数组中的字符串、数组做实参数组中的字符串、数组做实参作业作业-24-上机训练例上机训练例5.8例例5.17完成完成ftp:/10.172.250.252:1161下的下的“实验实验12-数组程序设计(二维数组)数组程序设计(二维数组).doc”上机运行上机运行我廖雪峰主编我廖雪峰主编教材第教材第56页的调试页的调试样例样例上机实验(上机实验(第第12次实验次实验)谢谢 谢谢 观观 看!看!