1、integerrealcharboolean,基本数据类型:,构造数据类型:,数组,一维数组基础(建立、输入、输出),构造类型: 数组.数组定义: 具有固定数目的相同类型的元素按一定的顺序排列而成。比如:一个班50人的数学成绩;一个班50人的5门课的成绩;.数组分类:一维数组(只有1个下标,线性关系); 二维数组(有2个下标,平面关系); 多维数组.,一、一维数组的定义,1、定义:type 数组类型名 = array 下标类型 of 基类型 ;如上例:type arraytype = array 17 of integer ; var a:arraytype ;当然也可以合并在一起: var
2、a:array 17 of integer ;,2、说明:数组类型名和数组变量名:整体性,通过数组变量名在计算机内存中开辟一片连续的存储空间;个体性:单独使用a i ; 基类型:每个元素的数据类型。 下标类型:一般为子界型,如1100;-1010;a z。 不能直接写成integer, 决定了数组元素的个数。 type fruittype = (apple,orange,banana,pineapple); atype = array a z of integer ; btype = array fruittype of real ; var a:atype ; b:btype ;,二、一维数
3、组元素的输入,不能整个数组输入,只能逐个元素赋值,a i := x ; 一般用for循环做。如: for i := 1 to 7 do read( a i );,三、一维数组元素的输出,不能整个数组一起输出,只能逐个元素输出,write(a i ); 一般用for循环做。如: for i := 1 to 7 do write( a i );,四、一维数组的简单应用,步骤:定义数组给数组赋初值运算、操作输出,例一:求10个人的数学平均分。,type arraytype = array 110 of integer ;var a:arraytype ; i ,sum:integer; averag
4、e:real;begin write(please input 10 score : ); for i := 1 to 10 do read( a i ); writeln; for i := 1 to 10 do write( a i ); writeln;sum:=0;for i:= 1 to 10 do sum:=sum + a i ;average:= sum / 10;write(average is : ,average);end.,一、一维数组的定义,1、定义:type 数组类型名 = array 下标类型 of 基类型 ;如上例:type arraytype = array 1
5、7 of integer ; var a:arraytype ;当然也可以合并在一起: var a:array 17 of integer ;,二、一维数组元素的输入,一般用for循环做。如: for i := 1 to 7 do read( a i );,三、一维数组元素的输出,一般用for循环做。如: for i := 1 to 7 do write( a i );,例二、国际象棋盘中,第1格放1粒米,第2格放2粒米,第3格放4粒米,第4格放8粒米,第5格放16粒米,问:64个格子总共可以放多少粒米?,用连乘求出每个格子里可以放的米粒数。,用连加求出所有格子里总共放的米粒数。,const
6、n=64;var a:array 164 of real ; 为什么不用integer,防止溢出 i:integer;total:real;begin for i:= 1 to 64 do begin a i :=1; for j:= 2 to i do a i := a i * 2; end; total:=0; for i:= 1 to 64 do total:= total+a i ; writeln(总共可以放: ,total);end.,分析:第i个格子可放多少粒米:2 i 1,例三、输出斐波列契数列的前N项(5个1行) 0 1 1 2 3 5 8 13 21 ,分析:1、 写出递归
7、公式; 2、复习前面学过的方法:用几个变量 3、如何实现5个1行:设一个变量i ,初值为0,输出一次,i加1,并且判断i MOD 5 = 0 时换行便行,重新置i为0 。,const n=50;var a:array 1n of real; 注意范围 i :integer;begin a 1 :=0;a 2 :=1; for i:= 3 to n do a i :=a i - 1 + i - 2 ; for i:= 1 to n do begin write(a i ); if i mod 5 = 0 then writeln; end;end.,例四、输入N个整数,找出最大数所在位置,并将它
8、与第一个数对调位置。,方法:“比武招亲”、“打擂台”,const n = 20;var a:array 1n of integer; i,max,num,t:integer;begin for i:= 1 to n do read(a i ); writeln; for i:= 1 to n do write(a i :8); writeln; max:=a 1 ;num:=1; for i:= 2 to n do if a i max then begin max:=a i ; num:= i; end; t:=a 1 ;a 1 := a num ;a num := t ; writeln(最大数在: ,num ,个位置); for i:= 1 to n do write(a i :8); writeln;end.,思考题:键盘输入10个数,请将10个数从大到小排列并输出?,