数组ppt课件.ppt
《数组ppt课件.ppt》由会员分享,可在线阅读,更多相关《数组ppt课件.ppt(27页珍藏版)》请在三一办公上搜索。
1、第六章 数组,编程实现:输入n(n5)个数,并且以相反的顺序输出这些数。,program p1(input,output);var x1,x2,x3,x4,x5:integer;begin readln(x1,x2,x3,x4,x5);writeln(x5:2,x4:2,x3:2,x2:2,x1:2);end.,编程实现:输入n(n100)个数,并且以相反的顺序输出这些数。,结论:当n值较小时,我们通过定义5个不同变量很轻松的解决这个问题。但是当n值超过一定个数时,定义变量及数据输入、输出成为一个繁琐的过程。,思考:能不能用一个变量来表示一批数据?,答案:数组,数组是一种常用的数据类型,由固定
2、数目的相同类型的元素按一定的顺序排列而成。,program p1_2(input,output);const n=5;var x:array1.n of integer;i:integer;begin for i:=1 to n do read(xi);for i:=n downto 1 do write(xi:2);end.,整个程序非常简洁,而且直接通过修改常量n的定义就可以解决不同的n值需要。,结论:在编程时用到一批类型相同的数据,为了处理上的方便,通常以数组的形式来定义这一批数据。,一维数组的定义:一维数组是指只有一个下标的数组。,var a:array 1.10 of integer
3、;,type arr=array1.10 of integer;定义类型var a:arr;定义变量,或:,其中:a是这一批数据的名称,称为数组名;array、of是定义数组的保留字;中括号中的数字是数据编号的下限和上限,同时也说明了数据的个数(上限-下限+1);最后一个是数据的基类型,如integer,char,real,boolean。下标类型:(1)子界型(2)有序的(3)有限的(4)可以是常量,变量,表达式。,例:定义如下数组:(1)表示20种商品的价格var price:array1.20 of real;(2)表示30件邮件的安全邮递情况var mail:array1.30 of
4、boolean;(3)统计50个学生在一次考试(满分100,最低分60)中各分数的分布情况var score:array60.100 of integer;(4)统计一篇文章中各字母的出现频率(所有字母均小写)var number:arraya.z of intger;,例:判断以下数组的定义是否合理。var a:array1.n of integer;不合理。因为,数组的元素个数必须是确定的。var b:array10.1 of integer;不合理。数组下标的下界应小于上界。var c:arrayinteger of boolean;不合理。因为数组元素个数太多,空间分配不够。var d
5、:array1.0.3.0 of real;不合理。下标为real实型,不属于有序类型。var e:array1.50000 of real;不合理。数组元素个数太多,空间分配不够。,一维数组定义举例:,由于数组中所有元素属于同一类型,所以每个元素在存储器中占用的空间大小相同。,一维数组的存储:顺序存储,假设数组的第一个元素存放的位置为LOC(k1),每个元素占用的空间大小为S,则ki的存放位置为:LOC(ki)=LOC(k1)+S*(i-1),一维数组的基本操作:,整体运算:a:=b;输入数组名代表的并不是一个变量,而是一批变量,因而,不能直接整个数组读入,而是要逐个数组元素读入,通常用循环
6、结构来完成这一功能。下面是几个常用输入数组元素的例子:for i:=1 to 10 do read(ai);从键盘读入数组元素的值;最常用的方法,(1)i=1时,read(a1);(2)i=2时,read(a2);(3)i=3时,read(a3);(4)i=4时,read(a4);(5)i=5时,read(a5);(6)i=6时,read(a6);(7)i=7时,read(a7);(8)i=8时,read(a8);(9)i=9时,read(a9);(10)i=10时,read(a10);,for i:=1 to 10 do ai:=i;数组元素a1到a10的值分别为1到10;数据赋初值for
7、i:=1 to 10 do ai:=0;数组元素清0;最常用的数据初始化的方法for i:=1 to 10 do ai:=random(100);随机产生10个100以内的数,赋给各数组元素 输出和数组元素的输入相同,数组元素的输出也不能由一个write语句直接完成。同样要逐个数组元素输出。通常也用循环结构来完成这一功能:for i:=1 to 10 do write(ai,);数组元素之间用空格分隔writeln;,program p2(input,output);var a,b:array1.5 of integer;i:integer;begin writeln(-);for i:=1
8、to 5 do read(ai);writeln;for i:=1 to 5 do write(ai:5);writeln;b:=a;for i:=1 to 5 do write(bi:5);writeln;end.,一维数组赋值、输入、输出举例:,编程实现:从键盘输入字符,直到“”结束输入。,program p3_1(input,output);var a:array1.100 of char;ch:char;i:integer;begin writeln(-);read(ch);i:=0;while ch#do begin i:=i+1;ai:=ch;read(ch);end;end.,p
9、rogram p3_2(input,output);var a:array1.100 of char;ch:char;i:integer;begin writeln(-);i:=1;repeat read(ch):ai:=ch;i:=i+1;until ch=#;end.,分析:一串字符可以用数组表示。但是并不知道这一串字符的具体长度,所以不能使用for循环输入。因为知道循环结束的条件,所以可以用while或repeat循环实现。,例题:从键盘输入10个数,将这10个数逆序输出,并求这10个数的和,输出这个和。program p4;var a:array 1.10 of integer;i,s
10、:integer;begin for i:=1 to 10 do read(ai);for i:=10 downto 1 do write(ai,);writeln;s:=0;for i:=1 to 10 do s:=s+ai;writeln(s=,s);end.,习题1:读入10个数,输出偶数项,并打印他们的和,输出奇数项,并打印它们的平均数。习题2:读入n个数,打印其中的最大数和最小数及其位置号。,program p6_4_1(input,output);var a:array1.10 of real;i:integer;ou,ji:real;ave:real;begin writeln(
11、*p6_4_1.pas*);ou:=0;ji:=0;writeln(please input ten numbers:);for i:=1 to 10 do begin read(ai);if i mod 2=0 then ou:=ou+ai else ji:=ji+ai;end;ave:=ji/5;writeln;write(oushuxiang is:);for i:=1 to 10 do if i mod 2=0 then write(ai:8:2);writeln;writeln(sum is:,ou:12:2);write(jishuxiang is:);for i:=1 to 10
12、 do if i mod 20 then write(ai:8:2);writeln;writeln(average is:,ave:12:2);writeln;end.,program p6_4_2(input,output);var n,i:integer;a:array1.100 of integer;max,min,bmax,bmin:integer;begin writeln(*p6_4_2.pas*);write(please input a number:);readln(n);writeln;writeln(please input,n,numbers:);for i:=1 t
13、o n do read(ai);max:=a1;min:=a1;bmax:=1;bmin:=1;for i:=1 to n do begin if aimax then begin max:=ai;bmax:=i;end;if aimin then begin min:=ai;bmin:=i;end;end;writeln;writeln(max is:,max,xiabiao is:,bmax);writeln(min is:,min,xiabiao is:,bmin);end.,一维数组的应用数据的移动,左移:将数组中的第一个元素移动到数组末尾,其余数据依次往前平移一个位置。,temp,右
14、移:将数组中的最后一个元素移到第一个位置,其余数据依次往后平移一个位置。(1)temp:=an;(2)n-1-n,n-2-n-1,.2-3,1-2(3)temp-a1,左移程序实现:temp:=a1;for i:=2 to n do ai-1:=ai;an:=temp;,右移程序实现:temp:=an;for i:=n-1 downto 1 do an+1:=an;a1:=temp;,思考:若要将数组的所有元素实现逆序交换(即把a1和an交换,a2和an-1交换)如何?,program p5;const n=10;a:array 1.n of integer=(1,2,3,4,5,6,7,8,
15、9,10);var i,j,temp:integer;begin writeln(-);for i:=1 to n do write(ai:4);writeln;i:=1;j:=n;while ij do begin temp:=ai;ai:=aj;aj:=temp;i:=i+1;j:=j-1;end;for i:=1 to n do write(ai:4);writeln;writeln;end.,(1)temp:=a1;(2)2-1,3-2,4-3,.n-n-1(3)temp-an,数据的查找:查找数组中值为x的元素顺序查找,while aix do i:=i+1;数据的删除:删除数组中第
16、k个元素akfor i:=k to n-1 do ai:=ai+1;数据的插入(1)在数组的第k个位置插入 for i:=n downto k do ai+1:=ai;ak:shu;(2)如果是插入到一串数据的某一个数据之后,先要定位 while aix do i:=i+1;找到后,插入位置应为i+1,一维数组的应用:数据的查找、删除、插入,例65 P77 对于数组a,假设它的所有元素是按照递增顺序存放的。现在输入一个x,如果x存在于数组a中,则要把x元素删除;否则将x插在相应的位置,保持a数组仍然递增。,一维数组的应用数据的排序,例:从键盘输入n个数,将它们按照从大到小的顺序输出。,for
17、i:=1 to n-1 do for j:=i+1 to n do if ajai then begin temp:=aj;aj:=ai;ai:=temp;end;,temp,(1)i=1 j=2 a2和a1比较,如果a2大于a1则交换。j=3 a3和a1比较,如果a3大于a1则交换。j=4 a4和a1比较,如果a4大于a1则交换。j=5 a5和a1比较,如果a5大于a1则交换。j=6 a6和a1比较,如果a6大于a1则交换。j=7 a7和a1比较,如果a7大于a1则交换。j=8 a8和a1比较,如果a8大于a1则交换。此次循环结果使a1中为这八个数中的最大值。(2)i=2 j=3 a3和a2
18、比较,如果a3大于a2则交换。j=4 a4和a2比较,如果a4大于a2则交换。j=5 a5和a2比较,如果a5大于a2则交换。j=6 a6和a2比较,如果a6大于a2则交换。j=7 a7和a2比较,如果a7大于a2则交换。j=8 a8和a2比较,如果a8大于a2则交换。此次循环结果使a2中为这八个数中的次大值。(以此类推),由于在排序过程中总是大数往前,小数往后,相当于气泡上升,所以叫冒泡排序。,练习:从键盘输入10个数,将这10个数从大到小的顺序输出。,program p6;var i,j,temp:integer;a:array1.10 of integer;begin for i:=1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数组 ppt 课件
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-5361437.html