C语言教案ch7数组课件

上传人:我*** 文档编号:144916811 上传时间:2020-09-14 格式:PPT 页数:45 大小:985KB
返回 下载 相关 举报
C语言教案ch7数组课件_第1页
第1页 / 共45页
C语言教案ch7数组课件_第2页
第2页 / 共45页
C语言教案ch7数组课件_第3页
第3页 / 共45页
C语言教案ch7数组课件_第4页
第4页 / 共45页
C语言教案ch7数组课件_第5页
第5页 / 共45页
点击查看更多>>
资源描述

《C语言教案ch7数组课件》由会员分享,可在线阅读,更多相关《C语言教案ch7数组课件(45页珍藏版)》请在金锄头文库上搜索。

1、C程序设计(第二版)-教学课件,制作人: 黄 荧 制作人单位:河师大数学与信息科学学院,第七章 数组,数组的学习,标志着你的编程水平是小学还是中学. 前者的你只能指挥一个兵(单个数据), 后者的你可以指挥全军万马(大批数据).,第七章 数组,本章内容: 1 数组的概念 2 一维数组的定义和引用(重点!) 2 二维数组的定义和引用 3 字符数组的定义和引用 4 与数组相关的常用算法 (重点!),7.1 一维数组,一 一维数组的定义与使用:,一般形式: 数组名常量表达式,如,int a10; a是整型数组,数组a包含10个元素,分别用a0、a1、a9表示 重要特点: 1)数组的每一个元素都是一个简

2、单变量 2)数组的元素是连续存放的!,数组类型,数组长度,C中的一维数组相当于数学中的向量,有一个下标: a=(a0,a1,a2,an),例7.1将0-9放入数组,再按9-0输出数组 #include void main ( ) int i, a10; for(i=0;i=0;i-) printf(%d ,ai); printf(n); ,简单类型的变量只能存储一个单个的数据。 如:整型,实型,实符型等等。 结构类型的变量则能存储一组数据。 如:数组等等。, 给数组的全部元素赋初值: 如 int a10=0,1,2,3,4,5,6,7,8,9;,int a =0,1,2,3,4,5,6,7,8

3、,9;,变量初始化: 是指在定义变量的同时给它赋值., 给数组的部分元素赋初值:(其余元素自动赋为0),如:int a10=0,1,2,3,4;,int a10=0,1,2,3,4,0,0,0,0,0;,思考:这里的10省略了结果怎样?,二 一维数组的两种初始化形式,三 一维数组程序举例:,例7.2用数组求Fibonacci数列前20项。f1=1,f2=1,fn=fn-1+fn-2 (n3),用简单变量实现: #include void main() long f1,f2; int i; f1=1; f2=1; for(i=1;i=10;i+) printf(%12ld %12ld,f1,f2

4、); if(i%2=0) printf(n); f1=f1+f2; f2=f2+f1; ,用数组实现: (i=2-19) fi=fi-1+fi-2,#include void main() long f20=1,1;int i; for(i=2;i20;i+) fi=fi-2+fi-1; for(i=0;i20;i+) if(i%4=0) printf(n); printf(%12ld,fi); printf(n); ,例 7.3 用起泡法对10个整数排序(由小到大)P134,算法分析: a0 a1 a2 a3 a4 a5,a0 a1 a2 a3 a4,a0 a1 a2 a3,a0 a1 a2

5、,a0 a1,注意,这种方法总是相邻两个元素比较! 小的上冒,大的下沉,#include void main() int t,j,i, a10=2,4,6,8,4,7,-4,13,6,9; printf(排序前:n); for(i=0;iai+1 ) t=ai;ai=ai+1; ai+1=t; printf(排序后:n); for(i=0;i10;i+)printf(%4d ,ai); printf(n); ,例 求一维数组中数据的最大值及位置。,a0 a1 a2 an-1,max=a0 p=0,#include void main() int i,max,p, a10=2,4,6,18,4,

6、67,-14,13,6,9; printf(数组a:n); for(i=0;imax) max=ai;p=i; printf(max=a%d=%dn,p,max); ,例 在一维数组中查询数据x。,#include void main() int i,x,a10=2,5,7,1,7,4,3,8,9,7; printf(数组a:n); for(i=0;i10;i+)printf(%5d,ai); printf(n); printf(请输入查询的数据 x:); scanf(%d, ,算法分析: a0 a1 a2 an-1 x,例 在一维数组中删除数据x。,#include void main()

7、int i,k,x,a10=2,5,7,1,7,4,3,8,9,7; printf(删除前的数组a:n); for(i=0;i10;i+)printf(%5d,ai); printf(n请输入要删除的数据 x:); scanf(%d, ,算法分析: 1 定位:x的位置. 2 删除:从数组中删除x a0 a1 ai an-1 | x,思考: 保序插入的算法.,7.2 二维数组,1 二维数组的定义 数组名常量表达式1常量表达式2,第一维长度:行数,第二维长度:列数,如:float a34; 表示:二维实型数组a有 3排 4列 个实型元素如下: a00 a01 a02 a03 a10 a11 a12

8、 a13 a20 a21 a22 a23,C中的二维数组相当与数学中的矩阵,有两个下标:,注意事项:, C语言规定: 二维数组 - 特殊的一维数组。 行向量 - 特殊的元素。, 二维数组的存储方式:,二维数组是按排存储的。, 给部分元素赋初值:,2二维数组的初始化 (有两类4种形式), 给全部元素赋初值,a)分行赋初值: 如:int a3 4=1,2,3,4,5,6,7,8,9,10,11,12;,b) 不分行 如: int a3 4=1,2,3,4,5,6,7,8,9,10,11,12;,第二维长度 是绝对不能省略的!,a)分行赋初值: 如:int a34=1,3,5;,又如:int a34

9、=1,0,5;,b) 不分行赋初值,如:int a34=1,3,5 ;,当外循环变量控制的是行下标, 则是按行输入数据的!,一般格式: for(表达式1;表达式2;表达式3) 语句,3 二维数组程序举例,例 二维数组的输入与输出。,#include void main() int i,j,a33; /= 输入矩阵: printf(请输入9个数据:n); for(i=0;i3;i+) for(j=0;j3;j+) scanf(%d, ,1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9,思考:分析,修改其中的输入方式后的内存存放过程和输出结果。 1 for(i=0;i3;i+

10、) for(j=0;j3;j+) scanf(%d,例7.4 P138 数组的转置。,即,行变列,列变行:aijbji (0i2 0j3),例7.4 矩阵的转置。,#include void main() int i,j,a23=1,2,3,4,5,6,b32; printf(转置前:n); for(i=0;i2;i+) for(j=0;j3;j+) printf(%4d,aij); printf(n); for(i=0;i2;i+) for(j=0;j3;j+) bji=aij; printf(转置后:n); for(i=0;i3;i+) for(j=0;j2;j+) printf(%4d,

11、bij); printf(n); ,例 方阵的转置(在本数组中)。,#include void main() int i,j,t,a33=1,2,3,4,5,6,7,8,9; printf(n 转置前:n); for(i=0;i3;i+) for(j=0;j3;j+) printf(%4d,aij); printf(n); for(i=0;i3;i+) for(j=0;ji;j+) t=aij;aij=aji;aji=t; printf(n 转置后:n); for(i=0;i3;i+) for(j=0;j3;j+) printf(%4d,aij); printf(n); ,算法思想: 交换上下

12、三角阵的对应元素,如图。,例7.5 求二维矩阵(3*4)的最大值,及其所在行号及列号。,分析: 二维数组与一维数组完全类似:,#include void main() int a34=1,2,3,4,9,8,7,6, -10,10,-5,2; int i,j,row,colum,max; max=a00; row=0;colum=0; for(i=0;imax) max=aij; row=i;colum=j; printf(max=a%d%d=%dn, row,colum,max); ,例 矩阵的乘积。,A=(aij)2*3 B=(bij)3*4 乘积矩阵: C=(cij)2*4 (其中i=0

13、,1,j= 0,3),#include void main() int i,j,k,c24, a23=1,2,3,2,4,6, b34=1,3,5,2,0,1,0,1,1,0,1,3; /= 求矩阵的乘积:求乘积矩阵的每个元素 for(i=0;i2;i+) for(j=0;j4;j+) cij=0; for(k=0;k3;k+) cij+= aik*bkj; /=输出结果:乘积矩阵 printf(乘积矩阵c:n); for(i=0;i2;i+) for(j=0;j4;j+) printf(%4d, cij); printf(n); ,7.3 字符数组 P140,1 字符数组的定义: char

14、c10; c0=I; c1= ; c2=a; c3=m; c4= ; c5=h; c6=a; c7=p; c8=p; c9=y; 在内存中:,2 字符数组的初始化: 1)用字符常量(全部): char c10 =I, ,a,m, ,h,a,p,p,y; 2)用字符常量(部分): char c10 =h,a,p,p,y; 在内存中:,整型数组的元素是整型变量.(如,int a10;有a0a9,10个元素.) 实型数组的元素是实型变量.(如,float f100;有f0f99,100个元素.) 字符型数组的元素是,字符型变量.(类似地,char c80;有c0c79,80个元素.),3 字符数组的

15、引用,#include void main() char c10 =I, ,a,m, ,a, ,b,o,y; int i; for(i=0;i10;i+) printf(%c, ci); printf(n); ,例7.6 输出一个字符串. 注意: 通常用一维字符数组放一个字符串! (用一个字符变量只能放一个字符.),运行结果: I am a boy,例7.7 输出一个菱形图.,#include void main() char diamond5 = , ,*, ,*, ,*, *, , , ,*, ,*, ,*, , ,* ; int i,j; for(i=0;i5;i+) for(j=0;j5;j+) printf(%c, diamondij); printf(n); ,* * * * * * * *,注意: 通常用二维字符数组放多个字符串!,4 字符串与字符串的结束标志,1)字符串的结束标志: 0 2)用字符串给字符数组赋初值! char c =I am happy; char c =I am happy; char c =I, ,a,m, ,h,a,p,p,y,0; / char c =I, ,a,m, ,h,a,p,p,y; 3) 部分赋初值: char c10 =happy; 在内存中

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号