收藏 分享(赏)

第四讲 数组及其应用.ppt

上传人:gnk289057 文档编号:8527459 上传时间:2019-07-01 格式:PPT 页数:30 大小:71.50KB
下载 相关 举报
第四讲 数组及其应用.ppt_第1页
第1页 / 共30页
第四讲 数组及其应用.ppt_第2页
第2页 / 共30页
第四讲 数组及其应用.ppt_第3页
第3页 / 共30页
第四讲 数组及其应用.ppt_第4页
第4页 / 共30页
第四讲 数组及其应用.ppt_第5页
第5页 / 共30页
点击查看更多>>
资源描述

1、第四讲 数组及其应用,【引例 1:】从键盘上输入n个数,输出他们的最大数,最小数,平均数。 输入:第一行:n(100).第二行:n个正整数(1,1000),中间一个空格隔开。 输出:第一行:最大数。第二行:最小数。第三行:n个数的平均值(小数点后保留2位小数)。 样例: 输入:410 4 20 30 输出:30416.00,【引例 2:】输入全校学生的期中考试总分,按照成绩从高分到低分输出。学校人数不超过1800人。 如: 输入: 5 600 580 620 610 635 输出: 635 620 610 600 580,一、数组,一)一维数组 1.数组的定义 用来描述由固定数目的同一类型的元

2、素组成的数据结构。 一维数组类型的定义 一维数组类型的一般格式:array下标1下标2 of ;,全校1800名学生: 如:var a: array 11800 of integer;,1)、a是数组名, 代表的并不是一个变量,而是一批变量: a1,a2,a3a1800共1800个变量。 2)、array、of是定义数组的保留字; 3)、11800是数据编号的下限和上限,说明了数据的个数 (上限-下限+1); 4)、最后一个是数据的基类型 :每个数据元素的数据类型。,2、数组元素的使用: 数组的每个元素和普通的变量完全一样,可以赋值、输入、输出等操作。 如: var a: array 1180

3、0 of integer; 读入1800个学生的语文成绩: read(a1); a1:=90; ai+j:=120; 数组元素的输入与输出通常用for循环完成: For i:=1 to 1800 do read(ai);/读入 For i:=1 to 1800 do write(ai);/输出,1、(练习数组的输入与输出基本操作) 从键盘上顺序输入n(N100)的数,按输入顺序和反序输出。 输入: 5 20 10 4 5 26 输出: 20 10 4 5 26 26 5 4 10 20,var n,i:integer;a:array1100 of integer; beginreadln(n)

4、;for i:=1 to n do read(ai);for i:=1 to n do write(ai, );for i:=n downto 1 do write(ai, ); end.,二)数组的应用,2、编程将一个十进制整数k转化为二进制数(k1000000)。 样例: 输入: 19 输出: 10011,四种进制:,各种进制之间的转换(整数部分): 1、十转换为二、八、十六进制:方法:除R取余法 2、二、八、十六进制转换为十进制:按权展开即可 3、二、八、十六进制之间的相互转换:间接法和直接法,var k,n, i:longint;a:array120 of integer; begin

5、readln(k);n:=0;while k0 dobegin n:=n+1;an:=k mod 2;k:=k div 2;end;for i:=n downto 1 do write(ai); end.,3、编程将一个十进制整数k转化为十六进制数(k1000000)。 样例: 输入: 200 输出: C8,var k,n,m,i:longint;a:array120 of byte; beginreadln(k);m:=0;while k0 dobeginm:=m+1;am:=k mod 16;k:=k div 16;end;for i:=m downto 1 dobeginif ai=9

6、then write(ai);end; end.,if ai=10 then write(A);if ai=11 then write(B);if ai=12 then write(C);if ai=13 then write(D);if ai=14 then write(E);if ai=15 then write(F);,方法一,var k,n,i:longint;a:array120 of byte; beginreadln(k);n:=0;while k0 dobeginn:=n+1;an:=k mod 16;k:=k div 16;end;for i:=n downto 1 doif

7、 ai=9 then write(ai) else write(chr(ai+55); end.,方法二,constb:array16 of char=(A,B,C,D,E,F); var k,n,i:longint;a:array120 of byte; beginreadln(k);n:=0;while k0 dobeginn:=n+1;an:=k mod 16;k:=k div 16;end;for i:=n downto 1 doif ai=9 then write(ai) else write(bai-9); end.,方法三,4、砝码称重 1克、2克、50克的砝码各10个,问用这些

8、砝码一共能称出多少种重量。输出种数以及每种重量。,const max=530; vara:array0max of integer;i,j,k,s:integer; beginfor i:=0 to max do ai:=0;for i:=0 to 10 dofor j:=0 to 10 dofor k:=0 to 10 doai+2*j+50*k:=1;s:=0;for i:=1 to max do s:=s+ai;writeln(s);for i:=1 to max do if ai0 then write(i, ); end.,5、用求n(N=10000000)以内的素数个数。,样例3

9、输入: 10000000 输出: 664579,样例1: 输入: 10000 输出: 1229,样例2: 输入: 1000000 输出: 78498,vars,k,n,i,f:longint; beginreadln(k);s:=0;for n:=2 to k dobeginf:=0;for i:=2 to trunc(sqrt(n) doif n mod i=0 thenbeginf:=1;break;end;if f=0 then inc(s);end;writeln(s); end.,一般算法,var n,i,j:longint;s:int64;a:array110000000 of 0

10、1;0:不是,1:是beginreadln(n);for i:=1 to n do ai:=1;a1:=0;for i:=2 to trunc(sqrt(n) doif ai=1 thenbeginj:=2*i;while j=n dobegin aj:=0; j:=j+i; end;end;for i:=2 to n do s:=s+ai;writeln(s); end.,筛选法求素数,6、 输入全班学生的期中考试总分,按照成绩从高分到低分输出。 如: 输入: 5 600 580 620 610 635 输出: 635 620 610 600 580,选择排序算法基本思想: 对待排序的序列进

11、行n-1遍处理:第1遍处理是从a1,a2,an中选择最小的放在a1位置;第2遍处理是从a2,a3,an中选择最小的放在a2位置;第I遍处理是将a i ,a i+1,an中最小的数与a i 交换位置,这样经过第i遍处理后,ai是所有的中的第i小。即前i个数就已经排好序了。 N-1遍处理后,剩下的最后一个一定是最大的,不需要再处理了。,a:待排序的数组;/从小到大排序for i:=1 to n-1 do 从第一个元素开始,进行n-1遍处理 for j:=i+1 to n do 第i遍处理 If aiaj then 交换ai和aj begin t:=ai; ai:=aj; aj:=t;end;,co

12、nstmaxn=100; vara:array1maxn of integer;n,i,j,t:integer; beginreadln(n);for i:=1 to n do read(ai);for i:=1 to n-1 dofor j:=i+1 to n do if aiaj thenbegint:=ai;ai:=aj;aj:=t;end;for i:=1 to n-1 do write(ai, );writeln(an); end.,二、多维数组及应用。,当一维数组元素的类型也是一维数组时,便构成了二维数组。 二维数组定义的一般格式:array下界1上界1,下界2上界2 of 元素类

13、型; 如:var a:array15,14 of integer;,则表示a是二维数组,共有5*4=20个元素,它们是:a1,1a1,2a1,3a1,4a2,1a2,2a2,3a2,4a3,1a3,2a3,3a3,4a4,1a4,2a4,3a4,4a5,1a5,2a5,3a5,4,对二维数组的输入与输出也可用二重循环来实现: 输入: for i:=1 to 5 dofor j:=1 to 4 do read(ai,j);输出: for i:=1 to 5 dobeginfor j:=1 to 4 do write(ai,j, );writeln;end;,数组初始化为0; for I:=1 t

14、o n dofor j:=1 to n do aI,j:=0;或者:fillchar(a,sizeof(a),0);,1、输入班级中每个学生的数学、英语、物理成绩,求出每个人的总分、以及各科的平均分。 输入: 第一行:n(人数); 以下n行:每行3个数分别代表数学、英语、物理成绩。 输出: 第一行:n个同学的总分。 第二行:三科的平均分 输入: 5 77 88 99 89 78 97 90 80 70 68 95 78 97 87 79 输出: 264 264 240 241 263 84.2 85.6 84.6,vara:array160,14 of integer;n,i,j:intege

15、r; beginreadln(n);for i:=1 to n dofor j:=1 to 3 do read(ai,j);for i:=1 to n dofor j:=1 to 3 do ai,4:=ai,4+ai,j;for i:=1 to n dofor j:=1 to 3 doan+1,j:=an+1,j+ai,j;for i:=1 to n do write(ai,4, );writeln;for i:=1 to 3 do writeln(an+1,i/n:0:1); end.,2、输出 杨辉三角 输出杨辉三角的前N行(N=10)。 样例: 输入:4 输出: 1 1 1 1 2 1

16、1 3 3 1 1 4 6 4 1,var a:array1100,1100 of int64;n,i,j :integer; beginreadln(n);fillchar(a,sizeof(a),0); 数组初始为0for i:=1 to n dofor j:=1 to i do ai,j:=1; 下三角形改为1for i:=3 to n dofor j:=2 to i-1 do ai,j:=ai-1,j-1+ai-1,j; 自上而下递推求值for i:=1 to n do 输出三角形beginfor j:=1 to i do write(ai,j, );writeln;end; end.,

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

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报