资源描述:
《Pascal二维数组的应用下ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第八讲二维数组的应用(下)─程序设设计基础班(A班)2021/9/17107-08下学期基础班内容回顾在上一次课中我们用了类比的方法具体介绍了二维数组的概念,定义,使用.回头来看二维数组的使用可以使我们的数据更加有结构感,如果说一维数组的的应用经常伴随着一重循环的话,那么二维数组的运用经常伴随着两重循环,理解了这个概念后二维数组的概念和运用就会非常的简单和清晰。2021/9/17207-08下学期基础班定义的格式为:<数组名>[下标1,下标2,…,下标n]说明:显然,每个下标表达式的类型应与对应的下标类型一致,且取值不超出下标类型所指定的范
2、围。 例如,设有说明:typematrix=array[1..5,1..4]ofinteger;vara:matrix;则表示a是二维数组,共有5*4=20个元素,它们是:a[1,1]a[1,2]a[1,3]a[1,4]a[2,1]a[2,2]a[2,3]a[2,4]a[3,1]a[3,2]a[3,3]a[3,4]a[4,1]a[4,2]a[4,3]a[4,4]a[5,1]a[5,2]a[5,3]a[5,4]因此可以看成一个矩阵,a[4,2]即表示第4行、第2列的元素。由于计算机的存储器是一维的,要把二维数组的元素存放到存储器中,pa
3、scal是按行(第一个下标)的次序存放,即按a[1,1]a[1,2]a[1,3]a[1,4]a[2,1]…,a[5,4]的次序存放于存储器中某一组连续的存储单元之内。二维数组2021/9/17307-08下学期基础班例题讲解一输入4名学生数学、物理、英语、化学、pascal五门课的考试成绩,求出每名学生的平均分,打印出表格。分析:用二维数组a存放所给数据,第一下标表示学生的学号,第二个下标表示该学生某科成绩,如a[i,1]、a[i,2]、a[i,3]、a[i,4]、a[i,5]分别存放第i号学生数学、物理、英语、化学、pascal五门课的考
4、试成绩,由于要求每个学生的总分和平均分,所以第二下标可多开两列,分别存放每个学生5门成绩和总分、平均分,即总分a[i,6],平均分a[i,7]。2021/9/17407-08下学期基础班programex5_4;vara:array[1..4,1..7]ofreal;{4行7列}i,j:integer;beginfillchar(a,sizeof(a),0);{函数fillchar用以将a中所有元素置为0}writeln(‘Enter4studentsscore’);fori:=1to4do{通过循环对四个学生的成绩进行处理}beginfo
5、rj:=1to5do{读入每个人5科成绩}beginread(a[i,j]);{读每科成绩时同时统计总分}a[i,6]:=a[i,6]+a[i,j];end;readln;{读入回车}a[i,7]:=a[i,6]/5;{求平均分}end;{输出成绩表}writeln('No.Mat.Phy.Eng.Che.Pas.Tot.Ave.');fori:=1to4dobeginwrite(i:2,'');forj:=1to7dowrite(a[i,j]:9:2);writeln;end;end.2021/9/17507-08下学期基础班二:打印扬辉
6、三角打印111121133114641我们将该数组变换一下方式:111121133114641发现规律该扬辉三角就是一个二维数组的下三角部分,假设该二维数组为YH,它每一行的首尾都是1,其他非首位字母Y[I,J]:=Y[I-1,J-1]+Y[I-1,J];并且我们要控制开始位置2021/9/17607-08下学期基础班参考程序Programp6;Varyh:array[1..10,1..10]ofinteger;{定义一个十行十列的二维数组}I,j:integer;BeginYh[1,1]:=1;{第一行}Fori:=2to10do{从第二
7、行开始}BeginYh[I,1]:=1,yh[I,i]:=1;{每一行首尾都是1}Forj:=2toi-1do{非首尾数字}Yh[I,j]:=yh[i-1,j-1]+yh[i-1,j];{计算}End;Writeln(‘yanghui’);Fori:=1to10do{输出扬辉三角}BeginWrite(‘‘:40-3*i);{首字母定位}Forj:=1toIdowrite(yh[I,j]:6);Writeln;End;End.思考输出反杨辉三角2021/9/17707-08下学期基础班三、求二维数组中的“马鞍点”求一个五阶方阵中这样元素的位
8、置:它在行上是最大的,在列上是最小,(这种元素我们把它称为“马鞍点”)如果没有请打印出相应的信息。consta:array[1..5,1..5]ofinteger=((10,12