预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共107页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

PASCAL语言为什么要使用数组从以上的讨论可以看出,如果只使用简单变量处理大量数据,就必须使用大量只能单独处理的变量,即使是简单问题也需要编写冗长的程序。同学们可能已经看出,我们需要把一大批具有相同性质的数据组合成一个新类型的变量,可以用简单的程序(比如循环50次)对这个新变量的各个分量进行相同的处理,每个分量仍然保留单个变量的所有性质(在上面的例子中,各分量是整型变量或实型变量的性质)。如果能象数学中使用下标变量ai形式表示这50个数,则问题就容易实现。在Pascal语言中,具有下标性质的数据类型是数组。如果使用数组,上面的问题就变得十分简单、清晰。例如,读入50个学生的成绩,只需写如下语句即可:fori:=1to50doreadln(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个学生的总分fori:=1to50do//循环读入每一个学生的成绩,并把它累加到总分中beginread(a[i]);tot:=tot+a[i];end;ave:=tot/50;//计算平均分fori:=1to50doifa[i]<avethenwriteln('No.',i,'',a[i]);//如果第i个同学成绩小于平均分,则将输出这个学生的序号和成绩。要在程序中使用下标变量,必须先说明这些下标变量的整体―数组,即数组是若干个同名(如上面的下标变量的名字都为a)下标变量的集合,这些变量的类型全部一致。一维数组当在说明部分定义了一个数组变量之后,Pascal编译程序为所定义的数组在内存空间开辟一串连续的存储单元。例如:vara:array[1..10]ofinteger;以下表示a数组在内存的存储如表所示:一维数组元素的赋值操作一维数组的引用例输入10个数,要求程序按输入时的逆序把这10个数打印出来。也就是说,按输入相反顺序打印这10个数。【分析】我们可定义一个数组a用以存放输入的50个数,然后将数组a中的内容逆序输出。programex5_1;typearr=array[1..10]ofinteger;//说明一数组类型arrvara:arr;i:integer;beginwriteln('Enter10integer:');fori:=1to10doread(a[i]);//从键盘上输入10个整数readln;//读入时起换行作用fori:=10downto1do//逆序输出这10个数write(a[i]:10);end.1、输入一串字符,以'?'结束,统计其中每个字母出现的次数。【分析】为了简单起见,只考虑每个小写字母出现的次数。为记录每个字母出现的次数,定义一个由26个元素组成的数组,下标类型是字符,元素类型为整型。如:num:array['a'..'z']ofinteger;用num['a']记录字母a出现的次数,用num['b']记录字母b出现的次数,……开始应将num的每个元素置成0,其实所有变量的初始值都为0。当读入的字符不是'?'时,应判断它是否为字母,若是则应将相应字母计数加1。此时需判断哪个字母,只要将读入的字母作为下标,就可以找出相应的数组元素,将它加1即可。若读入的字符是'?'则结束循环,最后输出统计结果。程序如下:Programex5_2;varnum:array['a'..'z']ofinteger;ch:char;beginforch:='a'to'z'do//等价于fillchar(num,sizeof(num),0);num[ch]:=0;read(ch);whilech<>'?'dobeginif(ch>='a')and(ch<='z')then//判断是否为小写字母num[ch]:=num[ch]+1;read(ch);end;readln;//换行和暂停forch:='a'to'z'doifnum[ch]<>0thenwrtieln(ch,'',num[ch]);end.运行结果cabc*&^8796abcaa?a4b2c32、将a数组中第一个元素移到最后数组末尾,其余数据依次往前平移一个位置。【分析】为完成题目所要求的操作,其算法应该包括以下几个主要步骤:①把第一个元素的值取出放在一个临时单元temp