最新复习Pascal数组1ppt课件
《最新复习Pascal数组1ppt课件》由会员分享,可在线阅读,更多相关《最新复习Pascal数组1ppt课件(16页珍藏版)》请在装配图网上搜索。
1、复习Pascal数组1JSOI2009JSOI2009年大丰冬令营(年大丰冬令营(年大丰冬令营(年大丰冬令营(B B层)层)层)层)程序设计程序设计程序设计程序设计P Pascalascalascalascal想一想:下列数组这定义对不对,如不对,为什么?Var a:array1.n of char;b:array10.1 of integer;c:arrayinteger of boolean;d:array1.0.3.0 of real;e:array1.50000 of real;说明:说明:a数组中数组中n为变量;为变量;b数组中,下标的上下界应从小到大;数组中,下标的上下界应从小到大
2、;c、e数组元素个数太多,空间分配不够;数组元素个数太多,空间分配不够;d数组下标为实型,不是有序类型。数组下标为实型,不是有序类型。JSOI2009JSOI2009年大丰冬令营(年大丰冬令营(年大丰冬令营(年大丰冬令营(B B层)层)层)层)程序设计程序设计程序设计程序设计P PascalascalascalascalJSOI2009JSOI2009年大丰冬令营(年大丰冬令营(年大丰冬令营(年大丰冬令营(B B层)层)层)层)程序设计程序设计程序设计程序设计P PascalascalascalascalJSOI2009JSOI2009年大丰冬令营(年大丰冬令营(年大丰冬令营(年大丰冬令营(B
3、 B层)层)层)层)程序设计程序设计程序设计程序设计P PascalascalascalascalJSOI2009JSOI2009年大丰冬令营(年大丰冬令营(年大丰冬令营(年大丰冬令营(B B层)层)层)层)程序设计程序设计程序设计程序设计P PascalascalascalascalJSOI2009JSOI2009年大丰冬令营(年大丰冬令营(年大丰冬令营(年大丰冬令营(B B层)层)层)层)程序设计程序设计程序设计程序设计P PascalascalascalascalJSOI2009JSOI2009年大丰冬令营(年大丰冬令营(年大丰冬令营(年大丰冬令营(B B层)层)层)层)程序设计程序设计
4、程序设计程序设计P PascalascalascalascalJSOI2009JSOI2009年大丰冬令营(年大丰冬令营(年大丰冬令营(年大丰冬令营(B B层)层)层)层)程序设计程序设计程序设计程序设计P Pascalascalascalascal冒泡法程序:冒泡法程序:冒泡法程序:冒泡法程序:Program mppx(input,output);const n=10;var a:array1.n of integer;I,temp:integer;t:boolean;begin randomize;for I:=1 to n do begin ai:=trunc(random(100);w
5、rite(ai:4);end;repeat t:=true;for i:=1 to n-1 do if aiai+1 then begin temp:=ai;ai:=ai+1;ai+1:=temp;t:=false;end until t;writeln;for I:=1 to n do write(aI:4);End.随机产生随机产生随机产生随机产生1010个个个个0-1000-100的整数并输出的整数并输出的整数并输出的整数并输出冒冒冒冒泡泡泡泡排排排排序序序序做标记,若没做标记,若没做标记,若没做标记,若没有交换值则有交换值则有交换值则有交换值则t t为为为为true,true,出现交换
6、出现交换出现交换出现交换后后后后t t改为改为改为改为falsefalse将排好的序输出。将排好的序输出。将排好的序输出。将排好的序输出。JSOI2009JSOI2009年大丰冬令营(年大丰冬令营(年大丰冬令营(年大丰冬令营(B B层)层)层)层)程序设计程序设计程序设计程序设计P Pascalascalascalascal应应 用用:例例例例6-5 6-5 将一个十进制整数转化为二进制数。将一个十进制整数转化为二进制数。将一个十进制整数转化为二进制数。将一个十进制整数转化为二进制数。分析:在标准类型中,分析:在标准类型中,长整型范围是长整型范围是-2147483648-21474483647
7、,而二进而二进制数制数 10000000000的的十进制数为十进制数为1024,因,因此如果直接来转换会此如果直接来转换会出现数据溢出。为了出现数据溢出。为了能更好存储二进制的能更好存储二进制的各个位数,可以采用各个位数,可以采用数组。假定输入的数数组。假定输入的数据是长整型,则存储据是长整型,则存储二进制数的数组长度二进制数的数组长度为为32。十十二的方法是除以二的方法是除以2反向取余法。反向取余法。Program ex6-5(input,output);var bin:array0.50 of 0.1;x:longint;k,I:integer;Begin read(x);for I:=0
8、 to 50 do binI:=0;将数组清将数组清0 k:=0;while x0 do begin bink:=x mod 2;x:=x div 2;k:=k+1;end;write(二进制为二进制为:)for I:=k-1 downto 0 do write(binI:1);end.思考:如果要求将十进制的实数转化为二进制数,如何处理?提示:思考:如果要求将十进制的实数转化为二进制数,如何处理?提示:思考:如果要求将十进制的实数转化为二进制数,如何处理?提示:思考:如果要求将十进制的实数转化为二进制数,如何处理?提示:小数采用乘小数采用乘小数采用乘小数采用乘2 2取整的方法。取整的方法。取
9、整的方法。取整的方法。JSOI2009JSOI2009年大丰冬令营(年大丰冬令营(年大丰冬令营(年大丰冬令营(B B层)层)层)层)程序设计程序设计程序设计程序设计P Pascalascalascalascal例例6-66-6 圆盘找数,如图所示:找出圆盘找数,如图所示:找出4 4个相邻的数,使其个相邻的数,使其相加之各最大和最小的是哪相加之各最大和最小的是哪4 4个数?并给出它们的起个数?并给出它们的起始位置。始位置。1252011841661015219118137143179本题实际上就是先求出相邻的四个数的和,然本题实际上就是先求出相邻的四个数的和,然本题实际上就是先求出相邻的四个数的
10、和,然本题实际上就是先求出相邻的四个数的和,然后找出最大数和最小数。如何求相邻的四个数后找出最大数和最小数。如何求相邻的四个数后找出最大数和最小数。如何求相邻的四个数后找出最大数和最小数。如何求相邻的四个数的和呢?的和呢?的和呢?的和呢?设和存放在设和存放在S S中,我们不妨先确定一个序,即确定第一个中,我们不妨先确定一个序,即确定第一个数的位置和最后一个数的位置。假设圆盘上的数的位置和最后一个数的位置。假设圆盘上的2020个数中个数中5 5为第一个数,为第一个数,1212为最后一个数。则可将这为最后一个数。则可将这2020个数放在个数放在a a数数组中。数组的下标取组中。数组的下标取0-19
11、0-19。0Imax then begin max:=s;smax:=I;end;if smin then begin min:=s;smin:=I;end;end;write(max:,asmax:2);for I:=1 to 3 do write(+,asmax+I mod 20:2);write(=,max);writeln(start from,smax+1);write(min:,asmin:2);for I:=1 to 3 do write(+,asmin+I mod 20:2);write(=,min);writeln(start from,smin+1);end.JSOI200
12、9JSOI2009年大丰冬令营(年大丰冬令营(年大丰冬令营(年大丰冬令营(B B层)层)层)层)程序设计程序设计程序设计程序设计P Pascalascalascalascal例例6-76-7投票问题:竞选时,要求选民在投票问题:竞选时,要求选民在A A、B B、C C、D D四个候四个候选人中选择(人数不限),如果选择了选人中选择(人数不限),如果选择了ABCDABCD以外的人员则以外的人员则为废票。统计时输入为废票。统计时输入“#”“#”结束,请按候选人得票数从大结束,请按候选人得票数从大到小顺序输出候选人及其得票情况。到小顺序输出候选人及其得票情况。分析:设两个数组分析:设两个数组分析:设
13、两个数组分析:设两个数组namename数组存放候选人姓名,数组存放候选人姓名,数组存放候选人姓名,数组存放候选人姓名,name1name1放得放得放得放得票最多的人名,票最多的人名,票最多的人名,票最多的人名,name4name4存放得票最少的人名。存放得票最少的人名。存放得票最少的人名。存放得票最少的人名。scorescore存放各存放各存放各存放各人的得票数。人的得票数。人的得票数。人的得票数。假设开始时,假设开始时,假设开始时,假设开始时,namename数组中各元素的值依次为数组中各元素的值依次为数组中各元素的值依次为数组中各元素的值依次为A A、B B、C C、D D,则问题就转化
14、为重组则问题就转化为重组则问题就转化为重组则问题就转化为重组namename数组,而数组,而数组,而数组,而scorescore数组只起存储作用。数组只起存储作用。数组只起存储作用。数组只起存储作用。JSOI2009JSOI2009年大丰冬令营(年大丰冬令营(年大丰冬令营(年大丰冬令营(B B层)层)层)层)程序设计程序设计程序设计程序设计P PascalascalascalascalProgram ex6-7(input,output);var score:arrayA.D of integer;name:array1.4 of char;I,j:integer;select,ch:char
15、;begin read(select);for ch:=A to D do scorech:=0;将将score数组清数组清0 for I:=1 to 4 do nameI:=chr(ord(A)+I-1);name数组初始化为数组初始化为A、B、C、D while select#do begin if select in A,B,C,D then 有效票有效票 scoreselect:=scoreselect+1;对应候选人得票数加对应候选人得票数加1 read(select);end;for I:=1 to 3 do for j:=I+1 to 4 do if scorenameIscor
16、enamej then根据票数确定名次根据票数确定名次 begin ch:=nameI;nameI:=namej;namej:=ch;end;writeln(rusult:);for I:=1 to 4 do writeln(nameI,:,scorenameI);end.间接寻址思想间接寻址思想间接寻址思想间接寻址思想JSOI2009JSOI2009年大丰冬令营(年大丰冬令营(年大丰冬令营(年大丰冬令营(B B层)层)层)层)程序设计程序设计程序设计程序设计P Pascalascalascalascal小结:小结:1、数组的定义2、数组的基本操作:(1)赋值、输入、输出(2)移动 (3)查找、插入、删除(4)排序3、数组的应用:十进制二进制 圆盘找数 投票问题结束语结束语谢谢大家聆听!谢谢大家聆听!16
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。