C--课件-第六章-数组.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《C--课件-第六章-数组.ppt》由会员分享,可在线阅读,更多相关《C--课件-第六章-数组.ppt(57页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、记数器 i=1、总分zf=0i=10?读入一个分数到变量fs中zf=zf+fsavg=zf/10结束开始YN打印zf、avg问题的引入问题的引入 例:输入10个学生某门学科的成绩,求平均成绩。1、当读入下一分数时,前一分数值是否还能找到?2、如何将低于平均成绩的分数打印出来? 在程序设计中存储单个数据时,需要根据数据的类型定义相应的变量来保存。如存储一个整数时需要定义一个整数变量来保存,存储一个实数时需要定义一个单精度或双精度变量来保存,存储含有多个成分的一个记录数据时,需要定义该类型的一个结构变量来保存。 若在程序设计中需要存储同一数据类型的、彼此相关的多个数据时,如存储数学上使用的一个数列
2、或一个矩阵中的全部数据时,显然采用定义简单变量的方法是不行的,这就要求定义出能够同时存储多个值的变量,这种变量在程序设计中称为数组数组(相同类型的若干个元素所组成的有序集合)。 在实际应用中,一组相关的数据之间可能存在着一维关系,也可能存在着二维关系,等等。如下表: 张三70李四80王五90一维数组模型 学科姓名英语计算机张三7090李四8080王五9070二维数组模型概述概述 C+C+数据类型数据类型: 基本类(简单类)字符型/整型/实型/枚举型 构造类(组合类)数组/结构体/共用体 指针类 空类型(void) 基本类型单个出现的变量,每个变量可以代表一个确定的数据(变量值),且具有一定属性
3、。如 static int x,y;但变量间不存在确定的相互关系。 构造类型由基本类型按一定规则组成。其中数组 :由一组有序数据(数组元素)组成,这些数据保存在连续的内存空间,每个元素具有相同类型,因此占有相同大小的存储单元,具有统一数组名,用下标确定其顺序,但可以取各自值。 如 static int a5;其中: 1. 表示a是个数组,而不是一个简单变量a 2. 5表示该数组共有5个元素 3. 元素编号即下标从0开始,a0表示第一个元素,a4表示第5个元素(最后一个) 一般化:假设m和n是常量,则数组am的第一个元素是a0,最后一个元素是am-1;数组amn的第一个元素是a00,最后一个元素
4、是am-1n-1,以此类推。 数组的用处很多。简单例子:要读入某班全体50位同学某科学习成绩,然后进行简单处理(求平均成绩、最高分、最低分) 分析:若用简单变量,需50个不同变量名,如stu1,stu2,stu50,要用很多个cin命令。而用数组,可共用一个cin命令,并利用循环结构读取。 同变量一样,数组也必须先定义,后使用。 定义内容: 数组名 :必须是合法标示符 类型(存储属性/数据类型) 大小(维数/元素个数) 定义的一般形式: 存储属性 数据类型 数组名常量表达式常量表达式 常量表达式:常量或符号常量,其值必须为正,不能为变量 !如:int n=5;int an;这样定义是错误的,如
5、下为正确的:int a10,b54; char name8, ch23; static float x8*2+1, table234; #define NUM 40 int aNUM,bNUM+2; 数组的初始化数组的初始化 可以在定义数组的同时赋初值,如:int a5=1,2,3,4,5;12345int b23=1,2,3,4,5,6;123456也可写成:int b23=1,2,3,4,5,6; 可以省略第一维数组大小,如: int a =, b3=; 省略元素值,如:int x6=1,2,3,4; (x4、x5自动用0补足) 004321int a5=0; int b32=0;(全部元
6、素初始化为0 )int a3=1,2,3,4,5,6,0;000300520641int a 3=1,2,3,4,5,6,7 ; (思考第一维的大小?) 静态/外部数组未初始化,默认初值是0(数值)或0(字符). auto数组未初始化,初值为不可预料的数。 只能逐个引用数组元素,不能一次引用整个数组 .引用数组元素要注意下标不要越界(编译程序不检查是否“越界”).引用示例 : a23 a2-12*3-1 ax(x为整型表达式或变量) int a5; for (i=0;i5;i+) (注意下标不要越界) coutai; 数组元素的引用数组元素的引用 用一维数组来处理Fibonicci数列的前20
7、项。f1 = 1 n = 1f2 = 1 n = 2fn = fn-1 + fn-2 n 3 void main()int i; int f20 = 1,1; /* f1、f2已知 */ for(i=2; i20; i+) fi = fi-1 + fi-2; for(i=0; i20; i+) if (i%5 = 0) coutendl; coutsetw(12)fi; #include #include 【例】以下程序的运行结果是什么?#include void main()int a3=1,2,3,4,5,6,0;couta11a21a31;结果:5001 2 31 2 34 5 04 5
8、 06 0 06 0 00 0 00 0 0 【例】显示如下图形:1 0 0 0 0 2 1 0 0 0 3 2 1 0 0 4 3 2 1 0 5 4 3 2 1 a55分析:a00 a01 a02 a03 a04a10 a11 a12 a13 a14a20 a21 a22 a23 a24a30 a31 a32 a33 a34a40 a41 a42 a43 a44void main()int a55=1,2,1,3,2,1,4,3,2,1,5,4,3,2,1,i,j; for(i=0;i=4;i+) for(j=0;j=4;j+) coutaij; coutn; 例:读入某班全体50位同学某
9、科学习成绩,然后进行简单处理(求平均成绩、最高分、最低分) #include #define NUM 50void main() int i,scoreNUM,highest,lowest; float sum=0,average; for (i=0;iscorei;cout全班同学成绩公布如下:n; /*公布全 班同学分数*/for (i=0;iNUM;i+) couti+1号同学:scorei; if (i%10=9) coutn;for (i=0;iNUM;i+) /*求平均成绩并显示出来*/ sum+=scorei;average=sum/NUM;cout全班平均成绩是:average
10、endl;highest=score0; 例:找出一个二维数组的鞍点,即该位置上的元素在该行上最大,在该列上最小,也可能没有鞍点.#include #define M 10#define N 10void main()int andianMN,m,n,i,j,flag=0,max,k; system(cls); coutm; coutn; for(i=0;im;i+) coutnthe i+1line:; for(j=0;jandianij; coutnn;【例】有一34矩阵,编程求其元素最大值并输出其行、列号。 voidvoid main() int i,j,x,y,max; int a 4
11、=3,5,8,1,6,9,7,12,-6; max=a00; for (i=0;i3;i+) for (j=0;jmax) max=aij; x=i; y=j; coutmax is a x y = max n; 3 5 8 16 9 7 12-6 0 0 0 结果:max is a13=12 用数组元素作函数实参此时可把数组元素看作普通变量(单向值传递).特点:主调函数中的实参数组元素(带下标) 被调函数中的形参普通变量 调用结果:形参值的变化对实参值无影响(二者分占不同内存) 【例】void main() int a=1,2,3,4,5,6; static int b6=2,3,0,4;
12、int i; sum(int,int,int);for (i=0;i6;i+) sum(ai,bi,i); couta=ai,b=bi; void sum(int x,int y,int z) x=z;y=z; 结果: a=1,b=2 a=2,b=3 a=3,b=0 a=4,b=4 a=5,b=0 a=6,b=0 用数组名作函数实参若int a6;则数组名a表示数组的起始地址.此时,是把实参数组的起始地址起始地址“传给”形参数组 .本质:对应的数组元素(不是形参与实参)共享同一内存单元(所谓“双向的地址传送”).特点:主调函数中的实参数组名(不带下标) 被调函数中的形参数组名或数组定义式 调用
13、结果:两数组同下标者为同值 . 数组作为函数参数数组作为函数参数 【例】void main() int a=1,2,3,4,5,6; static int b6=2,3,0,4; int i; sum(int ,int ,int);for (i=0;i6;i+) sum(a,b,i); couta=ai,b=bi; void sum(int x ,int y ,int z) xz=z+2;yz=z; 传址传址abyxxyab结果: a=2,b=0 a=3,b=1 a=4,b=2 a=5,b=3 a=6,b=4 a=7,b=5 例:下面的程序定义了一个3x4的数组,表示3个学生,每个学生有4门成
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课件 第六 数组
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内