ENDDO DO I=1,m sum= DO J=1,n
sum=sum+A(I,J) ENDDO B(J)=sum ENDDO
max=B(m); p=0 DO I=2,m
IF (B(I)/=max) THEN max=B(J); p=J ENDIF ENDDO
PRINT *,'对调前矩阵:' DO I=1,m
PRINT 200,(A,J=1,n) ENDDO DO J=1,n
A(1,J)=A(p,J); A(p,J)=A(1,J); A(1,J)=T ENDDO
PRINT *,'和最大的行:', p PRINT *,'对调后矩阵:' DO I=1,m
PRINT 200,(A(I,J),J=1,n) ENDDO
200 FORMAT(1X,
4. 实验要求
? 分析问题,设计算法,绘制框图,查找并改正程序错误,得到正确程序。 ? 在工作区shiyan09内创建新项目:xm93。
? 在项目xm93内创建源程序文件:xm93.f90,同时在文件中编辑输入给定程序。 ? 在项目xm93内编译、构建、运行、调试程序。
? 将输入数据和输出结果以注释形式编辑输入到源程序文件xm93.f90末尾。 ? 改写程序,求每列元素之和,将和最大的列与第一列对调,输出对调前后矩阵。 5.实验步骤
? 上机实验前,查找和改正程序中错误,得到正确程序。 ? 在工作区shiyan09内创建新项目:xm93。
? 在项目xm93内创建源程序文件xm93.f90,编辑输入源程序文本。 ? 编译、构建、运行、调试程序。
-68-
运行程序,输入矩阵阶数:3,4,以及下面矩阵数据:
12 25 15 20 18 30 20 12 10 20 17 11
运行结束,得到输出结果。
? 将输入输出数据以注释形式编辑输入到源程序文件末尾。
? 在工作区shiyan09内创建新项目:xm931,在新项目内创建源程序文件xm931.f90, 编辑输入已改写程序。编译、构建、运行、调试程序。输入自定一组数据,获得输出结果。
五.实验小结
本次实验主要涉及二维数组和动态数组的应用,对二维数组的处理多数情况使用二重循环结构,所以二维数组处理与二重循环有密切关系,实验时要重点关注。在使用中要特别注意数组下标的使用和数组元素的引用。
对于二维数组赋初值,要掌握数组构造器和RESHAPE函数的使用。要熟练掌握用隐含DO循环实现数组的输入输出。
通过本次实验,学生对一维数组、二维数组、甚至三维数组及其综合应用有深入了解,能够设计和编写较复杂的数组应用程序。
六.课外练习
利用课后业余时间,完成以下练习,以巩固所学知识。 求解以下问题:
已知两组有序整数(个数不定),将两组整数合并为一组有序整数。合并后的该组整数没有相同整数。从键盘输入两组整数,输出合并前后整数序列。输入使用静态数组和动态数组两种方式,编写程序实现之。
提示:使用三个数组,两个保存合并前两组整数,一个保存合并后整数。 解题要求:
? 对问题进行详细分析,设计算法,绘制框图,编写程序。 ? 在工作区lianxi9内创建新项目:lx9。
? 在项目lx9内创建源程序文件:lx9.f90,同时在文件中编辑输入源程序文本。 ? 在项目lx9内编译、构建、运行、调试程序。 ? 输入数据,得到输出结果,将输入输出数据以注释形式编辑输入到源程序文件末尾。
-69-