一维数组,二维数组ppt课件_第1页
一维数组,二维数组ppt课件_第2页
一维数组,二维数组ppt课件_第3页
一维数组,二维数组ppt课件_第4页
一维数组,二维数组ppt课件_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、排列的一维、二维排列、上课前保持手机安静做笔记、授课要求、排列的概念把握定义和引用一维排列的方法把握定义和引用二维排列的方法、学习目标、排列定义和引用一维排列的方法、学习内容、6.1排列的概念, 上一章中使用的变量都是基本的类型,例如整数int、字符类型char、浮点型(float、double )数据,这些都是简单的数据类型。 根据数据,仅单纯的数据类型是不够的,难以反映数据的特征,也难以有效地处理。 30名学生成绩,100名学生成绩需要30个变量,需要多少个变量?能用s1、s2、s3、s30表示成绩,能表现内在联系吗? c语言用括号中的数字表示下标,并且如s15所示,s是数组名,15是数组

2、中元素的数量。 具有相同属性的数据集,数组是一组有顺序的数据集。 排列中的各数据的排列有一定的规则,下标表示排列中的数据的编号。 例如s5。 数组中的元素由数组名称和后缀唯一确定。 数组中的每个元素都属于同一数据类型。 循环处理数组中的元素可以有效处理大量数据,大大提高效率。6.2.1维阵列定义6.2.2维阵列参照元素6.2.3维阵列初始化6.2.4维阵列程序示例,6.2维阵列定义6.2.1维阵列参照元素6.2.3维阵列是最简单的阵列。 数组元素只有一个下标一维数组,s5相当于“线”。 数组元素有下标的二维数组,s12相当于“面”。 数组元素有三个下标的三维阵列,s23相当于“体”。 一维和多

3、维数组的概念和用法相似。 定义.6.2.1次元排列,定义排列的方法与定义变量的方法相似。 PS; PS a5; 不同之处在于数组一次定义一组相关变量。在定义数组时,必须指定这些变量的类型、数组名称,数组中包含变量的数量。 int a10; 定义、6.2.1维数组和定义维数组的方法中,类型符号数组名称常量表达式数组名称的命名规则与变量名称相同,与标识符的命名规则一致。 常数表达式表示元素的数量。 请注意,下标不像int a10那样从0开始的元素a0、a1、a2、a9是a10。 可以在常数式中包含常数和符号常数。 变量不能包含在内。 也就是说,数组的大小与程序执行中的变量的值无关。 PS; 要引用

4、scanf(“%d”、6.2.2维数组中的元素,必须定义数组,然后引用数组中的元素t=a3,并将a数组编号为3的元素的值代入变量t。 只能单独引用数组元素,不能一次引用整个数组的元素。 b=a2; c=a5; 打印(“%d,%d,%d,%d,%d,%d,%d,%d,%dn”,a ); 参照.6.2.2维数组的元素包括:数组名称后缀a0=a5 a2 1-a2*3 a7/3,a19%3 int n=5,a10; an=20; 注意定义数组和参照数组要素的差异:形式上为int a10; 将排列长度定义为10的t=a6; 引用a数组编号为6的元素的简单判别方法:如果数组名称常数前面有类型名(char、

5、int、float、double等),则定义数组。 如果没有类型名称,则是引用数组元素。例6.1参照数组元素。 利用循环将09代入数组元素a0a9,按相反顺序输出各元素的值。 解题的想法:用循环将09代入数组元素a0 a9时,每个数组元素都有固定的值,按从a9到a0的顺序输出各元素的值。#include void main() int i,a10; for(i=0; i=0; 将i-) printf(%d,ai) printf(n )、a0a9的值设为09、a0a1a2a3a5a6a7a9,先输出a9,最后输出a0、6.2.3维阵列的初始化,对阵列元素的代入可以通过代入语句来实现,也可以在定义

6、阵列的同时(1)在定义数组时,给所有数组元素分配初始值int a10=0,1,2,3,4,5,6,7,8,9,a0=0,a1=1,a2=2; a3=3; a4=4; a5=5,a6=6,a7=7,a8=8,a9=9。 (2)只能分配给某些元素,未分配的元素按数组类型自动分配。 int a10=0,1,2,3,4; int a10=0,1,2,3,4,0,0,0,0,0; (3)对所有的数组元素赋予初始值时,如果确定数据数,则不需要在定义数组时指定数组长度,系统根据数据数决定数组长度。 int5=1、2、3、4、5; 可以写为inta=1,2,3,4,5。注意:如果数组的长度与定义初始值的个数不

7、同,则数组的长度不可省略。 如果数组a的长度为10,则使用inta=1、2、3、4、5的数组只分配了五个初始值,数组长度被视为5。 应写成a10=1、2、3、4、5 .6.2.4维数组程序例,用数组处理求6.2Fibonacci数列的问题。 以Fibonacci数列问题的意义为例。解题的想法:构成数组,将数组的第一个元素放在数组的第一个元素上,将数组的第二个元素放在数组的第二个元素上,数组号I的元素的值是该前两个元素值的和。 即,fi=fi-2 fi-1表示阵列的各元素之和、斐波那契数列、#包括语音主() int I; intf 20=1,1; /f0和f1的值为1,1 for (I=2; i

8、20; I ) PS=PS-2 PS-1; 求出/f2和f19的值for (I=0; i20; I )在按照i ) if(i%5=0) printf(n) /1行输出5个printf(d,fi )的printf(n ),例如5.8程序依次求出各个数据并输出之后,无法保存这些数据,难以单独输出第10个数据在本示例中,在阵列处理的情况下,将各数据存储在各阵列元素中,并容易单独输出第10个数,只要直接输出f9即可。例6.3如果有n人的话,各自的年龄都不同,想按照年龄从小到大的顺序排列。 解题构想:排序的法则有两个。 一个是“升顺”,从小到大。另一个是“降序”,从大到小把主题抽象化,用起泡法排序“n个

9、按升顺序排序”。 首先,比较第一个数量和第二个数量,在第二个数量小于第一个数量时,调换两个数量,在调换后较大的一方比第二个数量和第三个数量,在第二个数量小于第三个数量时,调换两个数量,在调换后将较大的一方放置在第三位置。 的双曲正切值。 的双曲正切值。 的双曲正切值。 执行一次循环,最大的书就会落在最后。 多数沉淀,小数泡沫,a0 a1 a2 a3 a4 a5,for(i=0; PS1) P=PS; PS=PS 1; ai 1=t;8 5 4 2 0 9,5 8 4 2 0 9,54809,5 4 2 0 8 9,a0 a1 a2 a3 a4 a5,for(i=0; PS1) P=PS; PS

10、=PS 1; ai 1=t;5 4 2 0 8 9,4 5 2 0 8 9,4 2 0 5 8 9,a0 a1 a2 a3 a4 a5,for(i=0; PS1) P=PS; PS=PS 1; ai 1=t;4 2 0 5 8 9,2 4 0 5 8 9,2 0 4 5 8 9,a0 a1 a2 a3 a4 a5,for(i=0; PS1) P=PS; PS=PS 1; ai 1=t; 二十四五八九,二十四五八九,a0 a1 a2 a3 a4 a5,for(i=0; PS1) P=PS; PS=PS 1; ai 1=t; for(i=0; PS1)、PS (K=0; PS1)、PS (K=0;

11、 PS1),PS (K=0; PS1)、PS (j=0; j5; j )、#包含语音主() int a 10; PS、PS、PS; 打印(输入10编号: n ) for (I=0; PS1) P=PS; PS=PS 1; ai 1=t; 打印编号: n (I=0; i10; i ) printf(%d,ai) printf(n ),6.3维阵列的定义和引用,6.3.1定义二维阵列6.3.2引用二维阵列的元素6.3.3维阵列的初始化6.3.4维阵列程序的示例,6.3.1定义二维阵列,2维阵列定义的一般形式为类型定义a为34(3行4列)的数组b为510(5行10列)的数组注意不能写为float 3

12、,4,b5,10.6.3.1定义二维数组,二维数组存储在存储器中的顺序:以行存储,即在存储器中存储第一行的元素,然后、6.3.2引用二维阵列的元素,二维阵列元素的表示形式是:阵列名称的后缀b12=a23/2是c3/25%5,d2 26-3是int a34; a34=3; 非法,6.3 .三维阵列初始化,inta34=1、2、3、4、5、6、7、8、9、10、11、12; inta 34=1,2,3,4,5,6,7,8,9,10,11,12等价/inta 34=1,0,0,0,5,0等价于inta 34=1,0,0,5,0,0 等效于inta34=1、5、6和0的inta34=1、0、0、0、5

13、、6、0、0、0、0,6.3.3维阵列的初始化,inta34=1、2、3、4、5、6、7、8、9、10 等效于int a4=1、2、3、4、5、6、7、8、9、10、11、12; int a4=0,0,3,0,0,0,0,0,0,0,0,0,0,10,0; 6.3.4次元排列程序例,6.4调换某二维排列a的行和列的要素,收纳到别的二维排列b中。 编程的想法:可以将a排列中的I行j列元素处理为b排列中的j行I列元素,例如可以将a00处理为b00 a01,将b10 a02处理为b20,可以用外环控制行的变化,用内环控制列的变化,# inclu PR 32、R、R; 打印阵列a : n (I=0;

14、i2; i ) /i控制行数的变化for (j=0; j3; j ) /j控制列数的变化printf( (,aij ); /输出a的各要素bji=aij; /a要素值被赋予与b对应的要素printf(n ),printf(array b:n) for (i=0; i3; i ) for(j=0; j2; j ) printf( () (,bij) /输出b的各要素,行列交换printf(n ),例6.5班有5个学生,知道每个学生有5门成绩,要求输出平均成绩最高的学生成绩和该学生的号码。 解题构想:用二维排列代表学生,用列代表授课成绩和平均成绩。 要保存5个学生的5课成绩和平均成绩,数组的大小应该是56。#包括语音主() int I,j,max_i; 浮点和,最大值=0; 在float 56=78、82、93、74、65、91、82、72、76、67、100、90、85、98、67、89、90、65、78、77、88、99、45、89/最后一列

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论