实验九1Word下载.doc

上传人:wj 文档编号:1498702 上传时间:2023-04-30 格式:DOC 页数:7 大小:67KB
下载 相关 举报
实验九1Word下载.doc_第1页
第1页 / 共7页
实验九1Word下载.doc_第2页
第2页 / 共7页
实验九1Word下载.doc_第3页
第3页 / 共7页
实验九1Word下载.doc_第4页
第4页 / 共7页
实验九1Word下载.doc_第5页
第5页 / 共7页
实验九1Word下载.doc_第6页
第6页 / 共7页
实验九1Word下载.doc_第7页
第7页 / 共7页
亲,该文档总共7页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

实验九1Word下载.doc

《实验九1Word下载.doc》由会员分享,可在线阅读,更多相关《实验九1Word下载.doc(7页珍藏版)》请在冰点文库上搜索。

实验九1Word下载.doc

i_min=1,j_min=1;

(3)给max赋初值:

max=matrix(m,n),位置赋初值:

i_max=m,j_max=n;

(4)使用“计数型”二重循环结构求绝对值最小元素min,所在位置i_min和j_min,最大元素max,所在位置i_max和j_max;

(5)输出绝对值最小元素min,所在位置i_min和j_min;

(6)输出绝对值最大元素max,所在位置i_max和j_max;

(7)输出交换前数组数据;

(8)绝对值最小元素与数组第1行第1列元素matrix(1,1)交换;

(9)绝对值最大元素与数组第m行第n列元素matrix(m,b)交换;

(10)输出交换后数组数据。

(11)结束

3.程序编写

设计和编写程序如下(不完整,请在下划线空白处填充正确内容):

!

班级:

?

姓名:

日期:

查询绝对值最小值和最大值

PROGRAMmain

PARAMETER(m=3,n=4)

REAL:

:

matrix(m,n),min,max,temp

INTEGER:

i_min=1,j_min=1,i_max=m,j_max=

matrix=RESHAPE((/25.5,15.2,20.3,35.2,12.0,14.5,38.5,29.5,&

&

30.5,15.3,18.5,17.8/),(/3,4/))

min=ABS(matrix(1,1));

max=

DOi=1,m

DOj=1,N

IF(ABS(matrix(i,j))<

)THEN

min=ABS(matrix(i,j))

i_min=;

j_min=j

ENDIF

IF(>

max)THEN

max=

i_max=i;

j_max=j

ENDDO

PRINT100,'

最小元素'

min,i_min,j_min

最大元素'

max,i_max,j_max

PRINT*,'

交换前矩阵:

'

DOi=1,m

PRINT200,(matrix(i,j),j=)

ENDDO

IF(min/=matrix())THEN

=matrix(1,1);

matrix(1,1)=min;

matrix(i_min,j_min)=temp

ENDIF

IF(max/=matrix())THEN

temp=matrix(m,n);

matrix(m,n)=max;

matrix(i_max,j_max)=

PRINT200,(matrix(i,j),j=1,n)

100FORMAT(1X,'

绝对值'

A,'

F4.1,2X,'

行号:

I2,2X,'

列号:

I2)

200FORMAT(1X,<

n>

(F4.1,2X))

END

4.实验要求

l分析问题,理解算法和程序,将程序填写完整。

l掌握二维数组声明、数组构造器、RESHAPE函数、隐含DO循环基本概念和使用规则。

l在D盘上创建新工作区:

shiyan09和新项目:

xm91。

l在项目xm91内创建源程序文件:

xm91.f90,同时在文件中编辑输入给定程序。

l在项目xm91内编译、构建、运行、调试程序。

l将输出结果以注释形式编辑输入到源程序文件xm91.f90末尾。

l改写程序,提高通用性(行数、列数和数组数据从键盘输入,绝对值最大元素与第1行第1列元素交换,绝对值最小元素与第m行第n列元素交换)。

运行程序,输入一组数组数据,获得运行结果。

5.实验步骤

l分析问题,理解算法和程序,完成程序填空,得到正确完整程序。

l启动软件开发环境MicrosoftDeveloperStudio。

l创建新工作区:

shiyan09。

l在工作区shiyan09内创建新项目:

l在项目xm91内创建源程序文件xm91.f90,编辑输入源程序文本。

l编译、构建、运行、调试程序。

运行程序,得到输出结果。

l输出结果以注释形式编辑输入到源程序文件末尾。

xm911,在新项目内创建源程序文件xm911.f90,编辑输入已改写程序。

编译、构建、运行、调试程序。

输入自定数组数据,获得输出结果。

三.实验内容2

生成“魔幻方阵。

魔幻方阵是指方阵的每一行、每一列、对角线元素之和均相等,其值为n(n2+1)/2,n代表方阵的行数和列数。

一个n阶奇数方阵由1到n2个自然数构成,其组成规律是:

(1)将1放在第1行的中间一列;

(2)由m=1开始依次从左下到右上方向放连续数,如m放在A(i,j),则m+1放在A(i-1,j+1);

(3)如果i-1<

1,则i-1为n;

(4)如果j+1>

n,则j+1为1;

(5)如果A(i-1,j+1)已放数,则将数放在A(i+1,j)中。

以下是五阶魔幻方阵:

输出:

魔幻方阵A

结束

开始

初始化:

i,3=j

m≤n2

i-1Þ

i,j+iÞ

j

A(1,3),2Þ

m

i<

1

i

j>

n

A(i,j)==0

A(i,j),m=m+1

i+3Þ

i,j-2Þ

i>

i-nÞ

j<

j+nÞ

图9-1程序框图

17241815

23571416

46132022

101219213

11182529

问题中魔幻方阵数据符合数组定义,用一个n行n列二维整型数组A存储魔幻方阵数据。

根据魔幻方阵组成规律,设计算法,绘制框图,如图9-1所示。

时间:

生成魔幻方阵

PARAMETER(n=5)

A=0,i=1,j=3,m

A(i,j)=

m=2

DOWHILE(m<

=)

i=i-1;

j=j+1

IF(i<

1)i=

IF(j>

n)j=

IF()THEN

A(i,j)=m

m=

ELSE

i=;

j=j-2

IF(i>

n)i=

IF(j<

1)=j+n

DOi=

PRINT'

(<

(I3,1X))'

(A(i,j),j=1,n)

4.实验要求

l在工作区shiyan09内创建新项目:

xm92。

l在项目xm92内创建源程序文件:

xm92.f90,同时在文件中编辑输入给定程序。

l在项目xm92内编译、构建、运行、调试程序。

l将输入数据和输出结果以注释形式编辑输入到源程序文件xm92.f90末尾。

l改写程序,提高程序通用性,将方阵阶数n从键盘输入,生成3、5、7阶魔幻方阵。

l分析问题,理解算法和程序,在程序下划线空白处填写正确内容。

l在项目xm92内创建源程序文件xm92.f90,编辑输入源程序文本。

得到5阶魔幻方阵数据。

l将输出结果以注释形式编辑输入到源程序文件末尾。

xm921,在新项目内创建源程序文件xm921.f90,编辑输入已改写程序。

运行程序,分别输入3、5、7,获得输出结果。

四.实验内容3

已知m×

n矩阵,求每行元素之和,将和最大的行与第一行对调,输出对调前后矩阵。

使用动态数组,编写程序实现之。

2.算法设计

n的矩阵符合数组定义,用二维整型数组A保存,m、n和数组A数据从键盘输入。

m行数组元素之和,有m个数,用一维整型数组B保存。

数组A和B使用动态数组。

问题求解算法比较简单。

分析问题,自行设计算法和绘制框图。

设计和编写程序如下(含有若干错误,请查找并改正错误):

数组元素对调

PROGRAMmain

INTEGER,ALLOCATABLE:

A(:

),B(:

INTEGERsum,max,m,n,p

PRINT*,'

请输入m×

n矩阵阶数m,n:

READ*,m,n

ALLOCATE(A,B)

按逻辑结构输入m×

n矩阵数据(数据件之间用空格间隔):

DOI=

READ*,(A(I,J),J=1,n)

DOI=1,m

sum=

DOJ=1,n

sum=sum+A(I,J)

B(J)=sum

max=B(m);

p=0

DOI=2,m

IF(B(I)/=max)THEN

max=B(J);

p=J

ENDIF

对调前矩阵:

DOI=1,m

PRINT200,(A,J=1,n)

DOJ=1,n

A(1,J)=A(p,J);

A(p,J)=A(1,J);

A(1,J)=T

和最大的行:

p

对调后矩阵:

PRINT200,(A(I,J),J=1,n)

200FORMAT(1X,<

(I4,1X))

l分析问题,设计算法,绘制框图,查找并改正程序错误,得到正确程序。

xm93。

l在项目xm93内创建源程序文件:

xm93.f90,同时在文件中编辑输入给定程序。

l在项目xm93内编译、构建、运行、调试程序。

l将输入数据和输出结果以注释形式编辑输入到源程序文件xm93.f90末尾。

l改写程序,求每列元素之和,将和最大的列与第一列对调,输出对调前后矩阵。

l上机实验前,查找和改正程序中错误,得到正确程序。

l在项目xm93内创建源程序文件xm93.f90,编辑输入源程序文本。

运行程序,输入矩阵阶数:

3,4,以及下面矩阵数据:

12251520

18302012

10201711

运行结束,得到输出结果。

l将输入输出数据以注释形式编辑输入到源程序文件末尾。

xm931,在新项目内创建源程序文件xm931.f90,编辑输入已改写程序。

输入自定一组数据,获得输出结果。

五.实验小结

本次实验主要涉及二维数组和动态数组的应用,对二维数组的处理多数情况使用二重循环结构,所以二维数组处理与二重循环有密切关系,实验时要重点关注。

在使用中要特别注意数组下标的使用和数组元素的引用。

对于二维数组赋初值,要掌握数组构造器和RESHAPE函数的使用。

要熟练掌握用隐含DO循环实现数组的输入输出。

通过本次实验,学生对一维数组、二维数组、甚至三维数组及其综合应用有深入了解,能够设计和编写较复杂的数组应用程序。

六.课外练习

利用课后业余时间,完成以下练习,以巩固所学知识。

求解以下问题:

已知两组有序整数(个数不定),将两组整数合并为一组有序整数。

合并后的该组整数没有相同整数。

从键盘输入两组整数,输出合并前后整数序列。

输入使用静态数组和动态数组两种方式,编写程序实现之。

提示:

使用三个数组,两个保存合并前两组整数,一个保存合并后整数。

解题要求:

l对问题进行详细分析,设计算法,绘制框图,编写程序。

l在工作区lianxi9内创建新项目:

lx9。

l在项目lx9内创建源程序文件:

lx9.f90,同时在文件中编辑输入源程序文本。

l在项目lx9内编译、构建、运行、调试程序。

l输入数据,得到输出结果,将输入输出数据以注释形式编辑输入到源程序文件末尾。

-69-

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2