发布时间 : 星期一 文章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,
PRINT '(1X,
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、实验步骤