付费下载
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第四讲 数组及其应用【引例 1:】 从键盘上输入n个数,输出他们的最大数,最小数,平均数。输入: 第一行:n(100). 第二行:n个正整数(1,1000),中间一个空格隔开。输出: 第一行:最大数。 第二行:最小数。 第三行:n个数的平均值(小数点后保留2位小数)。样例:输入: 4 10 4 20 30输出: 30 4 16.00【引例 2:】 输入全校学生的期中考试总分,按照成绩从高分到低分输出。学校人数不超过1800人。如:输入:5600 580 620 610 635输出:635 620 610 600 580一、数组 一)一维数组1.数组的定义用来描述由固定数目的同一类型的元素组成的
2、数据结构。一维数组类型的定义一维数组类型的一般格式: array下标1.下标2 of ;全校1800名学生: 如:var a: array 1.1800 of integer;1)、a是数组名, 代表的并不是一个变量,而是一批变量: a1,a2,a3a1800共1800个变量。2)、array、of是定义数组的保留字;3)、1.1800是数据编号的下限和上限,说明了数据的个数 (上限-下限+1);4)、最后一个是数据的基类型 :每个数据元素的数据类型。2、数组元素的使用:数组的每个元素和普通的变量完全一样,可以赋值、输入、输出等操作。如: var a: array 1.1800 of inte
3、ger;读入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)的数,按输入顺序和反序输出。输入:520 10 4 5 26输出:20 10 4 5 2626 5 4 10 20var n,i:integer; a:array1.100 of integer;begin readln(n); for i:=1 to n do re
4、ad(ai); for i:=1 to n do write(ai, ); for i:=n downto 1 do write(ai, );end.二)数组的应用2、编程将一个十进制整数k转化为二进制数(k1000000)。样例:输入:19输出:10011进制基数R基本符号二进制20,1八进制80,1,2,3,4,5,6,7十进制100,1,2,3,4,5,6,7,8,9十六进制160,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F四种进制:各种进制之间的转换(整数部分):1、十转换为二、八、十六进制:方法:除R取余法2、二、八、十六进制转换为十进制:按权展开即可3、二、八、十六
5、进制之间的相互转换:间接法和直接法var k,n, i:longint; a:array1.20 of integer;begin readln(k); n:=0; while k0 do begin 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输出:C8var k,n,m,i:longint; a:array1.20 of byte;begin readln(k); m:=0; while k0 do begi
6、n m:=m+1; am:=k mod 16; k:=k div 16; end; for i:=m downto 1 do begin if ai=9 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); case ai of 10: write(A); 11: write(B); 12: write(C); 1
7、3: write(D); 14: write(E); 15: write(F); end;方法一var k,n,i:longint; a:array1.20 of byte;begin readln(k); n:=0; while k0 do begin n:=n+1; an:=k mod 16; k:=k div 16; end; for i:=n downto 1 do if ai=9 then write(ai) else write(chr(ai+55);end.方法二const b:array1.6 of char=(A,B,C,D,E,F);var k,n,i:longint; a
8、:array1.20 of byte;begin readln(k); n:=0; while k0 do begin n:=n+1; an:=k mod 16; k:=k div 16; end; for i:=n downto 1 do if ai0 then write(i, );end.5、用筛选法求n(N=10000000)以内的素数个数。样例3输入:10000000输出:664579样例1:输入:10000输出:1229样例2:输入:1000000输出:78498var s,k,n,i,f:longint;begin readln(k); s:=0; for n:=2 to k d
9、o begin f:=0; for i:=2 to trunc(sqrt(n) do if n mod i=0 then begin f:=1; break; end; if f=0 then inc(s); end; writeln(s);end.一般算法var n,i,j:longint; s:int64; a:array1.10000000 of 0.1;0:不是,1:是 begin readln(n); for i:=1 to n do ai:=1; a1:=0; for i:=2 to trunc(sqrt(n) do if ai=1 then begin j:=2*i; while
10、 jaj then 交换ai和aj begin t:=ai; ai:=aj; aj:=t; end; const maxn=100;var a:array1.maxn of integer; n,i,j,t:integer;begin readln(n); for i:=1 to n do read(ai); for i:=1 to n-1 do for j:=i+1 to n do if aiaj then begin t:=ai; ai:=aj; aj:=t; end; for i:=1 to n-1 do write(ai, ); writeln(an);end.7、校门外的树【问题描述
11、】 某校大门外长度为L的马路上有一排树,每两棵相邻的树之间的间隔都是1米。我们可以把马路看成一个数轴,马路的一端在数轴0的位置,另一端在L的位置;数轴上的每个整数点,即0,1,2,L,都种有一棵树。由于马路上有一些区域要用来建地铁。这些区域用它们在数轴上的起始点和终止点表示。已知任一区域的起始点和终止点的坐标都是整数,区域之间可能有重合的部分。现在要把这些区域中的树(包括区域端点处的两棵树)移走。你的任务是计算将这些树都移走后,马路上还有多少棵树。【输入】第一行有两个整数L(1 = L = 10000)和 M(1 = M = 100),L代表马路的长度,M代表区域的数目,L和M之间用一个空格隔
12、开。接下来的M行每行包含两个不同的整数,用一个空格隔开,表示一个区域的起始点和终止点的坐标。【输出】一行,这一行只包含一个整数,表示马路上剩余的树的数目。【样例输入】500 3150 300100 200470 471【样例输出】298var f:array0.10000 of integer; i,j,l,m,a,b,s:integer;begin readln(l,m); for i:=0 to l do fi:=1; for i:=1 to m do begin readln(a,b); for j:=a to b do fj:=0; end; for i:=0 to l do s:=s
13、+fi; writeln(s);end.8、排队接水 有n个人排队在一个水笼头前接水,每个人的接水时间互不相等。找出一种n个人排队接水的顺序,使他们平均等待的时间最短。输入: 第一行:n(tj then begin tem:=ti; ti:=tj; tj:=tem; tem:=numi; numi:=numj; numj:=tem; end; sum:=0; for i:=1 to n do sum:=sum+(n+1-i)*ti; writeln(sum/n:0:2); for i:=1 to n-1 do write(numi, ); writeln(numn);end.二、多维数组及应用
14、。当一维数组元素的类型也是一维数组时,便构成了二维数组。二维数组定义的一般格式:array下界1.上界1,下界2.上界2 of 元素类型;如:var a:array1.5,1.4 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 do for j:=1 to 4 do read(ai,j);输出:for i:=1 to 5 do beg
15、in for j:=1 to 4 do write(ai,j, ); writeln; end;数组初始化为0;for I:=1 to n do for j:=1 to n do aI,j:=0;或者:fillchar(a,sizeof(a),0);1、输入班级中每个学生的数学、英语、物理成绩,求出每个人的总分、以及各科的平均分。输入:第一行:n(人数);以下n行:每行3个数分别代表数学、英语、物理成绩。输出:第一行:n个同学的总分。第二行:三科的平均分输入:577 88 9989 78 9790 80 7068 95 7897 87 79输出:264 264 240 241 263 84.2
16、 85.6 84.6 var a:array1.60,1.4 of integer; n,i,j:integer;begin readln(n); for i:=1 to n do for j:=1 to 3 do read(ai,j); for i:=1 to n do for j:=1 to 3 do ai,4:=ai,4+ai,j; for i:=1 to n do for j:=1 to 3 do an+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输出:111121133114641var a:array1.100,1.100 of int64; n,i,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2027届福建省宁德市屏南县数学四上期末统考模拟试题含解析
- 内蒙古巴彦淖尔市临河二中2027届四年级数学第一学期期末复习检测试题含解析
- 2027届四川省凉山彝族自治州冕宁县三年级数学第一学期期末监测试题含解析
- DB4403-T 573-2024 智慧城市数据账户资源共享应用规范
- 四年级数学(四则混合运算)计算题专项练习与答案汇编
- 2025-2026学年广东省云浮市高考生物必刷试卷含解析
- 2026中国时尚级硅胶饰品行业市场现状供需分析及投资评估规划分析研究报告
- 2026汽车销售市场研究分析现状供需外加项目融资评估发展计划报告
- 2026软件测试自动化工具应用效果评估及性能测试与缺陷管理流程
- 2026软件产业开源技术应用投资策略技术创新规划分析报告
- 2026年天津高考(语文)考试真题附答案
- 2026河北石家庄市栾城区殡仪馆公开招聘工作人员2名笔试模拟试题及答案详解
- 2026年度电力工程造价从业人员专业能力评价(电力工程造价管理)训练题及答案
- 2026教育局干部面试题及答案
- 水电工程测量规范(NBT 35029-2023 )
- 初创公司财务规章制度
- 江西省宜春市丰城市第九中学2025-2026学年高二上学期开学考试数学试题(含解析)
- 精神康复治疗师考核试题及答案
- 2026届人教版高三数学一轮复习零基础(三角函数板块:正余弦定理与解三角形)讲义、专题练习、答案汇编
- 赛迪:人工智能赋能新型工业化:范式变革与发展路径
- 中国铝酸钙粉行业调查报告
评论
0/150
提交评论