- 1、本文档共49页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
pascal第5章 数组课件
第五章 数组 ;第一节 一维数组 ;为什么要使用数组; 从以上的讨论可以看出,如果只使用简单变量处理大量数据,就必须使用大量只能单独处理的变量,即使是简单问题也需要编写冗长的程序。
选手们可能已经看出,我们需要把一大批具有相同性质的数据组合成一个新类型的变量,可以用简单的程序(比如循环50次)对这个新变量的各个分量进行相同的处理,每个分量仍然保留单个变量的所有性质(在上面的例子中,各分量是整型变量或实型变量的性质)。
如果能象数学中使用下标变量ai形式表示这50个数,则问题就容易实现。在Pascal语言中,具有下标性质的数据类型是数组。如果使用数组,上面的问题就变得十分简单、清晰。例如,读入50个学生的成绩,只需写如下语句即可:
for i := 1 to 50 do
readln(a[i]);; 在这里引用了带下标的变量(分量变量称为数组元素)a[i]来代替a1,a2…,a50,方括号中的i称为下标,当循环变量i=1时a[i]就是a[1];当i=2时a[i]就是a[2]……;当i=50时a[i]就是a[50]。输入的时候,让i从1变化到50,循环体内输入语句中的a[i]也就分别代表了a1,a2…,a50这50个带下标的变量。这样上述问题的程序可写为:
tot := 0; // tot存储50个学生的总分
for i := 1 to 50 do // 循环读入每一个学生的成绩,并把它累加到总分中
begin
read(a[i]);
tot := tot+a[i];
end;
ave := tot/50; //计算平均分
for i := 1 to 50 do
if a[i]ave then writeln(No.,i, ,a[i]);
//如果第i个同学成绩小于平均分,则将输出这个学生的序号和成绩。
要在程序中使用下标变量,必须先说明这些下标变量的整体―数组,即数组是若干个同名(如上面的下标变量的名字都为a)下标变量的集合,这些变量的类型全部一致。 ;一维数组 ;; 当在说明部分定义了一个数组变量之后,Pascal 编译程序为所定义的数组在内存空间开辟一串连续的存储单元。例如:
var a : array [ 1..10 ] of integer;
以下表示a数组在内存的存储如表所示: ;一维数组元素的赋值操作 ;一维数组的引用 ;例5.1 输入10个数,要求程序按输入时的逆序把这10个数打印出来。也就是说,按输入相反顺序打印这10个数。
【分析】我们可定义一个数组a用以存放输入的50个数, 然后将数组a中的内容逆序输出。
program ex5_1;
type arr=array[1..10]of integer; //说明一数组类型arr
var
a:arr;i:integer;
begin
writeln(Enter 10 integer:);
for i:=1 to 10 do read(a[i]); //从键盘上输入10个整数
readln; //读入时起换行作用
for i:=10 downto 1 do //逆序输出这10个数
write(a[i]:10);
end.;例5.2 输入一串字符,以?结束,统计其中每个字母出现的次数。
【分析】
为了简单起见,只考虑每个小写字母出现的次数。为记录每个字母出现的次数,定义一个由26个元素组成的数组,下标类型是字符,元素类型为整型。
如:num : array[a..z] of integer;
用num[a]记录字母a出现的次数,用num[b]记录字母b出现的次数,……
开始应将num的每个元素置成0,其实所有变量的初始值都为0。
当读入的字符不是?时,应判断它是否为字母,若是则应将相应字母计数加1。此时需判断哪个字母,只要将读入的字母作为下标,就可以找出相应的数组元素,将它加1即可。若读入的字符是?则结束循环,最后输出统计结果。;程序如下:
Program ex5_2;
var num : array[a..z] of integer;
ch : char;
begin
for ch := a to z do //等价于fillchar(num,sizeof(num),0);
num[ch] := 0;
read(ch);
whil
文档评论(0)