Fortran95实验指导 实验八 子程序 联系客服

发布时间 : 星期一 文章Fortran95实验指导 实验八 子程序更新完毕开始阅读

? ? ? ? ? 在工作区:shiyan08内创建新项目:xm82。

在项目xm82内创建源程序文件:xm82.f90,同时在文件中编辑输入程序。 在项目xm82内编译、构建、运行、调试程序。

将输出结果以注释形式编辑输入到源程序文件xm82.f90末尾。 使用递归子程序改写阶乘计算程序。

5、实验步骤

? ? ? ? ? ? ?

分析问题,设计算法,编写程序。

启动软件开发环境Microsoft Developer Studio。 在工作区shiyan08内创建新项目:xm82。

在项目xm82内创建源程序文件xm82.f90,编辑输入源程序文本。 编译、构建、运行、调试程序,得到输出结果。 输出结果以注释形式编辑输入到源程序文件末尾。

在工作区shiyan08内创建新项目:xm821,在新项目内创建源程序文件xm821.f90,在文件中输入已改写程序。编译、构建、运行、调试程序,获得输出结果。

四、实验内容3

1、问题描述

已知两个正整数数列A和B,每个数列数据个数不定(最多50个)。从A数列中删除B数列中出现的数,输出删除前后数列数据。通过内部子例行程序完成删除操作。编写程序实现之。

2、算法设计

分析问题,进行任务分解,得到求解问题的分层结构图,如图8-2所示。根据图8-2,

设计和编写主程序求解总问题,设计和编写子例行程序求解子问题。

图8-2 任务分解及分层结构图

根据分析,设计求解总问题算法如下:

(1)输入A数列和B数列数据(数据个数不定,最多50个)。 (2)输出删除前的A数列和B数列数据。 (3)从A数列中删除B数列中出现的数据。 (4)输出删除后A数列数据。 (5)结束。

根据分析,设计求解子问题算法,绘制流程图如图8-3所示。n、m分别表示A、B数列数据个数。因为数据均为正整数,规定-1为删除标志,要删除的数据ai赋值为-1即可。

图8-3 流程图

3、程序编写

使用内部子例行程序设计和编写程序如下(含有若干错误,请查找并改正错误): !班级:??? !姓名:??? !日期:???

!从A数列中删除B数列中出现的数据 PROGRAM main

PARAMETER(max=50) INTEGER A(n),B(max),n,m

PRINT '(A\\)','请输入A数列数据个数n:' READ*,n

PRINT '(A,I2,A)','请输入A数列',n,'个数据:' READ*,A(i),i=1,n

PRINT '(A\\)','请输入B数列数据个数m:' READ*,m

PRINT '(A,I2,A)','请输入B数列',m,'个数据:',(B(i),i=1,m) PRINT*,'删除前A数列数据:'

PRINT '(1X,(I3,2X))',(A(i),i=1,n) PRINT*,'删除前B数列数据:'

PRINT '(1X,(I3,2X))',(B(i),i=1,m)

CALL del(A,B)

PRINT*,'删除后A数列数据:' DO

IF(A(i)/=-1) PRINT '(I3,2x\\)',A(i) END DO PRINT* CONTAINS !数列内容删除

SUBROUTINE del(A,B,n,m) INTEGER A(n),B(m),n,m,i,j DO i=1,n DO j=1,m IF(A(i)>B(j)) A(i)=-1 END IF END DO END FUNCTION END

4、实验要求

? ? ? ?

分析问题,分解任务,理解算法和程序,查找并改正程序错误,得到正确程序。 在工作区shiyan08内创建新项目:xm83。

在项目xm83内创建源程序文件:xm83.f90,同时在文件中编辑输入程序。

在项目xm83内编译、构建、运行、调试程序。输入自行确定的A数列和B数列数据,得到运行结果。

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

5、实验步骤

? ? ? ?

分析问题,分解任务,理解算法和程序,查找并改正程序错误,得到正确程序。 在工作区shiyan08内创建新项目:xm83。

在项目xm83内创建源程序文件:xm83.f90,同时在文件中编辑输入程序。

在项目xm83内编译、构建、运行、调试程序。输入自行确定的A数列和B数列数据,得到运行结果。

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

五、实验内容4

1、问题描述

已知:

f(x,n)?n?(n?1)?xxxn?2??x1?x

计算当x=2.85,n=15时的函数值。

使用递归函数求解该问题。编写程序实现之。 x和n的值从键盘输入。

2、算法设计

函数f可用以下递推公式描述。

?x n?1?1?x? f(x,n)??x? n?1??n?f(x,n?1)根据递推公式可知,该问题是一个递推问题,可采用递归函数实现。求解算法比较简单,

采用选择结构就可实现。学生自行设计算法,绘制流程图。

3、程序编写

设计和编写程序如下(不完整,请在下划线空白处填充正确内容): !班级:??? !姓名:??? !日期:??? !主程序

PROGRAM MAIN INTEGER n REAL x,y

PRINT*,'请输入实数x和整数n(n≥1):' _________*,x,n y=_________ PRINT 100,x,n,y

100 FORMAT(1X,'f(',F5.2,',',I2,')=',f10.6) CONTAINS

_________ FUNCTION f(x,n) REAL f,x INTEGER n IF(n==1) THEN f=_______

ELSE IF(n>1) THEN f=x/(n+_________) ELSE

PRINT*,'n值不符合n≥1要求.' END IF

END FUNCTION END

4、实验要求

? ? ? ? ? ? ? 分析问题,理解递推公式、算法、程序和递归函数,将程序填写完整。 函数计算使用递归函数子程序实现。

输入输出数据采用有格式输入输出,使输入输出数据规范、醒目、简洁。 在工作区:shiyan08内创建新项目xm84。

在项目xm84内创建源程序文件:xm84.f90,同时在文件中编辑输入程序。 在项目xm84内编译、构建、运行、调试程序。

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

5、实验步骤