《(5.7.2)--6.2-二维数组程序设计基础.ppt》由会员分享,可在线阅读,更多相关《(5.7.2)--6.2-二维数组程序设计基础.ppt(25页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、数组二维数组程序设计基础(程序设计基础(C C语言)语言)Fundamentals of programming(C language)Contents目 录情境引入情境引入讲授新知讲授新知启发探究启发探究123学以致用学以致用4课外拓展课外拓展5【问题情境】如何编程实现打印如下杨辉三角形。目目 录录启发探索启发探索情景引入情景引入学以致用学以致用11 11 2 11 3 3 11 4 6 4 11 5 10 10 5 1课外拓展课外拓展目目 录录情景引入情景引入讲授新知讲授新知启发探究启发探究学以致用学以致用课外拓展课外拓展杨辉三角形的特点是:第一列和对角线上的元素值都是1,其他元素值均是前
2、一行同一列元素与前一行前一列元素之和。有六行六列要打印二二维维Contents目 录情景引入情景引入讲授新知讲授新知启发探索启发探索123学以致用学以致用4课外拓展课外拓展5目目 录录讲授新知讲授新知启发探索启发探索情景引入情景引入学以致用学以致用课外拓展课外拓展有两个下标的数组行下标123456aa00a10a20a01a11a21列下标二维数组【二维数组的示例】#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 for(j=0;j5;j+)scanf(%
3、d,&b1j);int a32=1,2,3,4,5,6;int i=0,j=0,b25=0;目目 录录讲授新知讲授新知启发探索启发探索情景引入情景引入学以致用学以致用课外拓展课外拓展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);目目 录录讲授新知讲授新知启发探索启发探索情景引入情景引入学以致用学以致用课外拓展课外拓展【二维数组的示例】#include main()i
4、nt 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);printf(Array a:n);外循环控制行 内循环控制列 给数组赋值 目目 录录讲授新知讲授新知启发探索启发探索情景引入情景引入学以致用学以致用课外拓展课外拓展【二维数组的示例】#include main()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,bi
5、j);printf(n);按矩阵形式输出时需加此行目目 录录讲授新知讲授新知启发探索启发探索情景引入情景引入学以致用学以致用课外拓展课外拓展运行结果:1 2 3 4 5 6 7 8 9 0 Array a:1 23 45 6Array b:1 2 3 4 56 7 8 9 0 int a32=1,2,3,4,5,6;表示a为二维数组名,a含6个元素各元素均为整型常用双层for处理二维数组在内存中为a分配6个连续的存储单元(按行)程序说明:目目 录录讲授新知讲授新知启发探索启发探索情景引入情景引入学以致用学以致用课外拓展课外拓展 1 2 3 4 5 6a00 a01 a10 a11 a20 a2
6、1a二维数组概念小结二维数组的一般定义形式:数据类型 数组名常量表达式常量表达式;例:例:int a45,b56int a45,b56 ;定义;定义的是的是a a为为4*54*5的数组,的数组,b b为为5*65*6的的数组数组 注意:千万不要写成a4,5,b5,6二维数组存放顺序:按行优先存放二维数组引用格式为:数组名下标下标 行下标的合理取值范围为0,行长度-1 列下标的合理取值范围为0,列长度-1二维数组初始化格式:数据类型 数组名 常量表达式 常量表达式=初始化数据;目目 录录讲授新知讲授新知启发探索启发探索情景引入情景引入学以致用学以致用课外拓展课外拓展Contents目 录情景引入
7、讲授新知启发探索123学以致用4课外拓展5double a46;定义46的实型数组计算第一行平均值sum=0;for(j=0;j5;j+)sum=sum+a 0 j;a 0 5=sum/5;二11三22四33定义46的实型数组,并将各行前五列元素的平均值分别放在同一行的第六列上。应如何编程实现?目目 录录讲授新知讲授新知启发探索启发探索情景引入情景引入课外拓展课外拓展学以致用学以致用for(i=0;i4;i+)计算第一行平均值sum=0;for(j=0;j5;j+)sum=sum+a 0 j;a 0 5=sum/5;四33各ii目目 录录讲授新知讲授新知启发探索启发探索情景引入情景引入课外拓展
8、课外拓展学以致用学以致用定义46的实型数组,并将各行前五列元素的平均值分别放在同一行的第六列上。应如何编程实现?#include 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);目目 录录讲授新知讲授新知启发探索启发探索情景引入情景引入课外拓展课外拓展学以致用学以致用程序
9、代码程序代码程序代码:运行结果运行结果运行结果:定义46的实型数组,并将各行前五列元素的平均值分别放在同一行的第六列上。应如何编程实现?Contents目 录情景引入情景引入讲授新知讲授新知启发探索启发探索123学以致用学以致用4课外拓展课外拓展5目目 录录讲授新知讲授新知启发探索启发探索情景引入情景引入学以致用学以致用课外拓展课外拓展【问题】如何编程实现打印如下杨辉三角形。11 11 2 11 3 3 11 4 6 4 11 5 10 10 5 1杨辉三角形有如下特点:只有下半三角形有确定的值第1列和对角线上的元素值都是1,其它元素值均是前一行同一列元素与前一行前一列元素之和 编程点拨一:定
10、义二维数组和各变量二:给杨辉三角形各元素赋初值三:按要求打印各元素值#include#define N 6int main()int aNN=0,i=0,j=0;return 0;for(i=0;iN;i+)ai0=aii=1;/给第1列和对角线上的元素赋1 for(i=2;iN;i+)for(j=1;ji;j+)/对角线上的元素已被赋值,所以ji aij=ai-1j-1+ai-1j;/其它元素值均是前一行同一列元素与前一行前一列元素之和 for(i=0;iN;i+)for(j=0;j=i;j+)printf(%5d,aij);printf(n);#include#define N 6main
11、()int aNN=0,i=0,j=0;for(i=0;iN;i+)for(i=2i=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给其它元素赋值ai0=aii=1;aij=ai-1j-1+ai-1j;【问题】如何编程实现打印如下杨辉三角形。11 11 2 11 3 3 11 4 6 4 11 5 10 10 5 1目目 录录讲授新知讲授新知启发探索启发探索情景引入情景引入学以致用学以致用课外拓展课外拓展完整程序Contents目 录情景引入情景引入讲授新知讲授新知启
12、发探索启发探索123学以致用学以致用4课外拓展课外拓展5目目 录录讲授新知讲授新知启发探索启发探索情景引入情景引入学以致用学以致用课外拓展课外拓展【课外练习1】输出如下所示的杨辉三角的前10行(注意对齐)。目目 录录讲授新知讲授新知启发探索启发探索情景引入情景引入学以致用学以致用课外拓展课外拓展#include main()int i,j,k,comb1010;for(i=0;i10;i+)combi0=combii=1;for(i=2;i10;i+)for(j=1;ji;j+)combij=combi-1j-1+combi-1j;for(i=0;i10;i+)for(k=1;k=(10-i)
13、;k+)printf();for(j=0;j=i;j+)printf(%-6d,combij);printf(n);return 0;运行界面截图如下:参考代码目目 录录讲授新知讲授新知启发探索启发探索情景引入情景引入学以致用学以致用课外拓展课外拓展【课外练习2】如何打印如下所示的两个九九乘法表?目目 录录讲授新知讲授新知启发探索启发探索情景引入情景引入学以致用学以致用课外拓展课外拓展#includeint main()int i,j,a1010;printf(九九乘法表n);for(i=1;i=9;i+)for(j=1;j=i;j+)printf(%dX%d=%2d,j,i,i*j);aji=i*j;puts();运行界面截图如下:参考代码目目 录录讲授新知讲授新知启发探索启发探索情景引入情景引入学以致用学以致用课外拓展课外拓展#includeint main()int i,j,a1010;printf(九九乘法表n);for(i=1;i=9;i+)for(j=1;j=9;j+)while(ji)printf(t);j+;printf(%d*%d=%dt,i,j,i*j);printf(n);运行界面截图如下:参考代码 谢 谢 观 看!