第五讲数组类型.ppt

上传人:本田雅阁 文档编号:3123082 上传时间:2019-07-13 格式:PPT 页数:16 大小:709.53KB
返回 下载 相关 举报
第五讲数组类型.ppt_第1页
第1页 / 共16页
第五讲数组类型.ppt_第2页
第2页 / 共16页
第五讲数组类型.ppt_第3页
第3页 / 共16页
第五讲数组类型.ppt_第4页
第4页 / 共16页
第五讲数组类型.ppt_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《第五讲数组类型.ppt》由会员分享,可在线阅读,更多相关《第五讲数组类型.ppt(16页珍藏版)》请在三一文库上搜索。

1、第五讲 数组类型,南通信息学奥林匹克 2011-11,例1:输入30个同学的数学成绩,打印出低于平均分的同学的学号与成绩。 用已学知识编程:,var a1,a2,a3,.,a30,s,p:real; 成绩,总分,平均分 x1,x2,x3,x30:integer; 学号 begin read(a1,a2,a3,.,a30); read(x1,x2,x3,.,x30); s:=a1+a2+a3+.+a30; p:=s/30 if a1p then write (x1 , , a1); . . .,5.1.1 为什么要使用数组,例1:输入30个同学的数学成绩,打印出低于平均分的同学的学号与成绩。 引

2、入下标变量ai能使该程序简单 。 s:=0;s表示总分 for i:=1 to 30 do begin read(ai); s:=s+ai; end; p:=s/30;计算平均分 for i:=1 to 30 do if aip then writeln(i, ,ai);,引入数组的优越性,1、把一大批相同性质的数据组合成一个新类型的变量数组 (如上例中的ai , a为数组变量,i为下标),彼此以下标区分。 2、通过修改下标变量的下标值,依次处理数组的各个下标变量,增强了程序中重复性语句的功能。 如: for i:=1 to 30 do begin read(ai); s:=s+ai; end

3、;,一维数组类型定义的格式: 数组类型名array 下标类型 of 元素类型;,arraytype=array 110 of integer; 定义数组类型,程序中使用数组必须遵守“先定义,后使用”的原则,type,数组类型名,元素类型,下界,上界,var s:arraytype; 说明数组变量,数组变量名,变量的数据类型,数组变量s的分量取值范围: s1, s2, s3, , s9,s10,5.1.2 一维数组,方括号中的“下标类型”可以是任何的顺序类型,即可以是整型,布尔型,字符类型,枚举类型,子界类型,type rowtype=array110 of real; inttype=arra

4、yAE of integer; color=(red,yellow,blue,white,black); colortype=arraycolor of char; var a:rowtype; b:inttype; c:colortype;,a数组的存储结构,b数组的存储结构,c数组的存储结构,确定了数组中访问数组元素下标的类型。 规定了数组元素可用下标的上,下界。 规定了该数组中元素的个数。,数组定义中下标类型的作用,定义一维数组常量,一维数组常量定义的格式: 数组常量名:数组类型名(初值1,初值2, 初值n),例:const p:array 110 of integer=(3,6,2,9

5、,0,4,1,7,23,43);,等价于:p1:=3, p2:=6, , p10:=43,若数组元素是字符型,则有: const s:array 110 of char =(3,6,2,9,0,4,1,7,a,f) =36290417af,计数 平移 3. 排序 杨辉三角形,一维数组应用,例2:输入一段以句号结尾的英文,统计并输出句中各字母出现的次数。假设句中没有大写字母。,思路: 1. 需要设置一个下标类型为子界型a z的一维数组n,存放各字母出现次数。 n : array az of integer;,数组型元素nc,数组变量n的下标,数组变量名,2. 初始化数组:fillchar(n,s

6、izeof(n),0),3. 输入:xdb axcd b.,4. 输出数组:,1,1,c,x,d,b,a,x,d,.,1,1,b,1,2,2,2,计数,var ch : char; n : array az of integer; k : 04;,计数,begin fillchar(n,sizeof(n),0); 给count的每个元素赋初值0,repeat read(ch); if (ch=a) and (ch=z) then nch:=nch+1 until ch=.;,k:=0; for ch:=atozdo if nch0 then begin write(ch:3,:,nch); k

7、:=(k+1) mod 4; if k=0 then writeln end;,end.,如果句子中出现过与下标相同的字母,输出该字母以及出现的次数,给计数器赋初值,每行只输出4列,读入字符,例3:从键盘输入n个整数a1,a2,ak,ak+1, an 对其进行平移处理, 按ak+1, ,an ,a1,a2,ak,ak+1 的顺序输出,其中k是小于n的常数,平移,a,1 2 3 4 5 6 7 8 9 10,t,12,15,49,66,503,515,519,552,557,608,12,a,1 2 3 4 5 6 7 8 9 10,平移3次后的结果:,思路与步骤:,3. 输出数据 for j:

8、=1 to n do write(aj:4),1. 输入数据 for i:=1 to n do read(ai);,2. 平移数据 t:=a1; for j:=2 to n do aj-1:=aj; an:=t,const n=10; k=3; var a:array1n of integer; i,j,t:integer; begin writeln(input:); for i:=1 to n do read(ai); for i:=1 to k do begin t:=a1; for j:=2 to n do aj-1:=aj; an:=t end; writeln(k); for j:

9、=1 to n do write(aj:4) end.,例3.从键盘输入n个整数a1,a2,ak,ak+1, an 对其进行平移处理, 按ak+1, ,an ,a1,a2,ak,ak+1 的顺序输出,其中k是小于n的常数,平移,const n=10; var a:array1nof integer; i,j,k,t:integer; begin writeln (input n:); for i:=1 to n do read(ai); for i:=1 to n-1 do begin k:=i; for j:=i+1 to n do if aji then begin t:=ak; ak:=

10、ai; ai:=t end end; writeln(pxjg:); for i:=1 to n do write(ai:2) end.,排 序,1,5,10,5,10,1,1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1,(a+b)0=1 1 (a+b)1=1a+1b 1 1 (a+b)2=1a2+2ab+1b2 1 2 1 (a+b)3=1a3+3a2b+3ab2+1b3 1 3 3 1 (a+b)4=1a4+4a3b+6a2b2+4ab3+1b4 1 4 6 4 1 (a+b)5=1a5+5a4b+10a3b2+10a2b3+5ab4+1b5 1 5 10 10 5 1,杨辉三角形两个腰上的数都是1,其它位置上的数是它的上一行该数“肩上”两个数之和。,例5:编写输出杨辉三角形的程序,1,6,6,15,20,15,数组输出:for j:=1 to i do write(j:4),说明:由于新生数据要覆盖数组原有数据,故: 1、在生成新数据之前必须将原来的值进行输出;2、每行的数据生成必须由行尾往行首进行,以第6行为例说明第7行数的生成: yh7:=1 yh6:=yh6+yh5 yh5:=yh5+yh4 yh4:=yh4+yh3 yh3:=yh3+yh2 yh2:=yh2+yh1,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1