文档库 最新最全的文档下载
当前位置:文档库 › fortran作业

fortran作业

fortran作业
fortran作业

工程分析程序设计上机作业(一)

Fortran程序设计基础

上机目的:掌握程序书写、字符集和标识符、数据类型、声明、算术表达式、表控输入输出语句等编程基本概念。

1、若有实型数A=1.0 B=3.5 T=10.0 X=5.0 整型数I=-5 J=7 K=3,求出下面表达式的值。

-(A+T) (B+(X/T))/(4.0*A) (I*J)/K (I/K)*J+T/X

-(K+1)/5+I*A-B SQRT(REAL(ABS(K)+1)) MAX(J,MOD(J,K)) J+INT(T/B)/2

program main

implicit none

real A,B,T,X,a1,a2,a3,a4,a5,a6,a7,a8

integer I,J,K

A=1.0;B=3.5;T=10.0;X=5.0;I=-5;J=7;K=3

a1=-(A+T)

a2=(B+(X/T))/(4.0*A)

a3=(I*J)/K

a4=(I/K)*J+T/X

a5=-(K+1)/5+I*A-B

a6=SQRT(REAL(ABS(K)+1))

a7=MAX(J,MOD(J,K))

a8=J+INT(T/B)/2

print*,'a1=',a1

print*,'a2=',a2

print*,'a3=',a3

print*,'a4=',a4

print*,'a5=',a5

print*,'a6=',a6

print*,'a7=',a7

print*,'a8=',a8

END PROGRAM

2、 假定a =1.0 b =2.0 c =-1.0,求以下数学表达式的计算值:

2234a b

a b +-

2b a

- 26l n ()1403b c a ++

cos ?? ?

1sin tan c -?? ? ???

program main

implicit none

real a,b,c,a1,a2,a3,a4,a5

a=1.0????

b=2.0

c=-1.0

a1=(3*a*a+4*b*b)/(a-b)

a2=(-b+sqrt(b*b-4*a*c))/(2*a)

a3=6*(3+a)*log((b+c)**2)/140

a4=cos(b/sqrt(a*a+b*b))

a5=sin(atan(sqrt(a*a+b*b)/abs(c)))

print*,'a1=',a1

print*,'a2=',a2

print*,'a3=',a3

print*,'a4=',a4

print*,'a5=',a5

END PROGRAM

3、 有一个六边形,求其面积。为求面积,作了3条辅助线。如图所示:(提示,三角形面积

=2a b c s ++=

,a 、b 、c 为三个边长)。

=21

program main

implicit none

real l1,l2,l3,l4,l5,l6,l7,l8,l9,s1,s2,s3,s4,a1,a2,a3,a4,a

l1=10;l2=30;l3=16;l4=13;l5=21;l6=14;l7=20;l8=36;l9=28

s1=(l3+l4+l7)/2

s2=(l2+l7+l8)/2

s3=(l1+l8+l9)/2

s4=(l5+l6+l9)/2

a1=sqrt(s1*(S1-l3)*(s1-l4)*(s1-l7))

a2=sqrt(s2*(s2-l2)*(s2-l7)*(s2-l8))

a3=sqrt(s3*(s3-l1)*(s3-l8)*(s3-l9))

a4=sqrt(s4*(s4-l5)*(s4-l6)*(s4-l9))

a=a1+a2+a3+a4

print*,'a=',a

END PROGRAM

4、我国现在人口13.0亿人,假定每年增长率为1.5%,求n年以后的人口数。n从键盘输入。

program main

implicit none

real::a=13.0,x,n

print*,'please input n:'

read*,n

x=a*(1+0.015)**n

print*,'x=',x

END PROGRAM

5、请写一个可以让使用者输入圆球体的半径,并计算、输出这个球体表面积与体积的程序。

program main

implicit none

real,parameter:: pi=3.1415927

real r,area,volume

print*,'please input the r of the ball:'

read*,r

area=4*pi*r*r;

volume=(4*pi*r**3)/3

print*,'area=',area,'volume=',volume

END PROGRAM

6、 请写一个程序,可以让使用者输入初始速度V 0(单位为m/s )与角度θ(单位°),利用下列公式计

算飞行时间与距离:

g V t /sin 20θ=

t V D ?=θcos 0

program main

implicit none

real,parameter::g=9.8,pi=3.1415927

real v,a,d,t,b

print*,'please input the velocity:'

read*,v

print*,'please input a'

read*,a

b=a*pi/180

t=2*v*sin(b)/g

d=v*cos(b)*t

print*,'t=',t,'d=',d

end program

FORTRAN 90 程序编程规范

FORTRAN 90 程序编程规范 Fortran 90 编程规范,使程序代码高度组织化,更加易读、易懂、易于维护,程序更加高效。使编出的程序更易懂、易于维护。 1 语言选择 数值预报创新系统软件开发应避免使用Fortran77 的某些过时特征以Fortran 90不一致的特征。选择Fortran 90 作为开发语言,并采用Fortran 90 的新功能,如动态内存的分配(dynamic memory allocation)、递归(recursion ), 模块(modules)、POINTER 、长变量名、自由格式等。 Fortran 77其中某些只是一些冗余的功能,这些功能已经过时,另外,还有一些在Fortran90 中被证明是不好的用法,建议不要使用。 2 Fortran 90 的新特性 2.1.1 建议使用的Fortran 90 新特性 建议使用Fortran 90 提供的模块(module ),并用Use ONLY 指定module 中哪些变量或派生类型定义可用于调用程序。 尽量使用数组下标三元组,这样可优化并减少所需的代码行数。为提高可读性,要在括号内表明数组的维数,例如: 1dArrayA(:) = 1dArrayB(:) + 1dArrayC(:) 2dArray(: , :) = scalar * Another2dArray(: , :) 当访问数组的子集时,例如在有限差分等式中,可以通过使用下标三元组实现。例如:2dArray(: , 2:len2) = scalar *( & Another2dArray(:, 1:len2 -1) & - Another2dArray(:, 2:len2) & ) 对程序单元(program units )命名,并使用End program ,End subroutine ,End interface ,End module 等结构再次指定“program unit ”的名称。 在逻辑表达式中使用>、 >=、 ==、 <、 <=、 /=,它们分别代 替.gt.、.ge.、.eq.、.lt.、.le.、.ne. 。新的表示方法更接近标准的数学符号 在变量定义中始终使用“::”;始终用“DIMENSION ”定义数组形状;始终用(len=)的语法格式声明字符变量的长度。

Fortran95习题答案

第四章 1.program main implicit none write(*,*) "Have a good time." write(*,*) "That's not bad." write(*,*) '"Mary" isn''t my name.' end program 2.program main real, parameter :: PI=3 implicit none.14159 real radius write(*,*) "请输入半径长" read(*,*) radius write(*,"(' 面积='f8. 3)") radius*radius*PI end program 3.program main implicit none real grades write(*,*) "请输入成绩" read(*,*) grades write(*,"(' 调整后成绩为'f8.3)") SQRT(grades)*10.0 end program 4.integer a,b real ra,rb a=2 b=3 ra=2.0 rb=3.0 write(*,*) b/a ! 输出1, 因为使用整数计算, 小数部分会无条件舍去write(*,*) rb/ra ! 输出1.5 5.program main implicit none type distance real meter, inch, cm end type type(distance) :: d write(*,*) "请输入长度:" read(*,*) d%meter d%cm = d%meter*100 d%inch = d%cm/2.54 write(*,"(f8.3'米='f8.3'厘米='f8.3'英寸')") d%meter, d%cm, d%inch end program 第五章 1.program main

fortran程序案例题汇编(14道)

1.Fibonacci数列定义如下: F1=1 F2=1 F n=F n-1+F n-2 (n>2) 求Fibonacci数列的前30项。 integer f(30),i f(1)=1 f(2)=2 do i=3,30 f(i)=f(i-1)+f(i-2) enddo print*,f end 2.输入10个学生的总分,求每个学生的名次integer s(10),a(10),i,j do i=1,10 read*,s(i) enddo do i=1,10 a(i)=1 do j=1,10 if(s(i)

3.给定一组数,按照从小到大的顺序输出。integer a(10) integer p do i=1,10 read *,a(i) enddo do j=1,9 p=j do i=j+1,10 if (a(i)

4.输入若干名学生的学号和三门课程(语数英)的成绩,要求从键盘输入一个学生的学号,能打印出该学生的三门功课成绩和总分。 character*6,dimension(:),allocatable::xue integer,dimension(:,:),allocatable::g integer,dimension(:),allocatable::zong integer i,j,n character*6,xh print *,"请输入学生的个数" read *,n allocate(xue(n)) allocate(g(n,3)) allocate(zong(n)) do i=1,n read *,xue(i),(g(i,j),j=1,3) enddo do i=1,n zong(i)=0 do j=1,3 zong(i)=zong(i)+g(i,j) enddo enddo print *,"请输入你要打印的学生的学号" read *,xh do i=1,n if(xue(i)==xh)then print *,(g(i,j),j=1,3),zong(i) exit endif enddo end

codeblocksideforfortranwindows上的完整使用心得

CodeBlocks IDE for Fortran windows上的完整使用心得 Code::Blocks IDE for Fortran windows上的完整使用心得作者: 锐利的碎片(站内联系TA) 发布: 2011-12-13 其实这个ide我以前有发过,不过最近还是很多人问windows上的fortran ide。emacs和vim是很好了,不过怕麻烦的人也还很多。于是再开帖介绍一下这个ide以及在windows下的使用。顺便为最近某事情攒下人品。1 介绍:Code::Blocks IDE for Fortran 是基于Code::Blocks添加fortran支持得到的一个分支版本。不过原本CB就对gfortran 支持很好,只是需要一些配置。而修改版加强了对fortran 的支持并基本完整的包含了fortran03和08语法的高亮和提示(这个看各人习惯了,我觉得还不是很烦就是了)。对c 和fortran的混合编程也有很好的支持。2 安装使用首先安装mingw,在https://www.wendangku.net/doc/db16689798.html,/projects/mingw/files/下载网络安装程序后安装,安装时选择所需的编译器,推荐同时安装msys,最简单的就是全装。然后安装ide,cbf可以从http://darmar.vgtu.lt/index.php这里下载,下载得到的是一个压缩文件,解压安装后执行主程序即可,默认程序配置在系统用户目录下,可以使用portable脚本在程序目录下保存配置。安装后运行程序,会提示选择默认编译器,这个是全局的默认编译器,如果程序探测到支持的编译器会显示

FORTRAN知识点总结

F O R T R A N 第2章FORTRAN90基础知识: 程序单元的概念: fortran90程序是一种分块形式的程序,整个程序由若干程序单元块组成。每个程序只有一个主程序单元。各单元体的程序体形式上相同。 程序单元可以是主程序、子程序(外部过程或内部过程)、模块MODULE (供其他程序单元引用即把该程序单元内的全部语句复制到程序单元中)或块数据程序单元BLOCK 。 语言元素:指在程序设计中用到的基本成分,如字符集、常量、变量、记号(标号、关键字、名字、常数、运算符和定界符)以及其他的基本结构等。 字符集:英文字母、阿拉伯数字、下划线、21个特殊字符($和?没有规定用法)。 数据结构: 整型INTEGER (34-2下划线后面是种别参数),n 位字长的计算机的数据表示范围一般为12~211-+---n n ,种别参数由内在询问函数KIND 送回,种别值提供的最小范围由内在函数SELECTED-INT-KIND 送回,表示十进制幂的范围由内在函数RANGE 送回; 实型REAL ,小数形式和指数形式;复型COMPLEX (种别类

型参数值取实部与虚部中较大者); 字符型CHARACTER,由一对单撇号或双撇号之间的字符序列组成; 逻辑型LOGICAL。 派生数据类型TYPE; 数组INTEGER,DIMENSION(1,50)::A,可直接对数组元素进行运算如3*A,SQRT(A); 字符子串,在字符串CHARACTER(LEN=80)::ROW中,ROW(1:3)就表示字符串ROW中第1到第3个元素组成的子串。 变量名的命名规则:不能超过31个字符;组成成分是字母、数字、下划线;第一个字符必须是字母。 第3章基本语句: 类型说明语句:类型说明(种别说明),属性说明::变量名表 尽量避免把两个实数作相等或不相等的比较。淘汰隐式说明IMPLICIT NONE 种别说明:种别参数即对可移植数据精度和范围进行选择的机制 KIND(X) 返回变元X的种别参数值 SELECTED-REAL-KIND(n,m) 产生一个种别值,它表示某一精度和范围。N指十进制有效位数,m指明值范围内以10为底的幂次。

fortran程序实例

1)实例3—求多个半径下的圆周长 ! z3.f90 --Fortran95 ! FUNCTIONS: ! z3 - Entry point of console application. !************************************************************************* ! PROGRAM: z3 ! PURPOSE: Entry point for the console application. !************************************************************************ program z3 ! 求多个半径下的圆周长 ! 主程序 ! PROGRAM Z3 PRINT *, 'R=',1.2,'C=',C(1.2) PRINT *, 'R=',3.4,'C=',C(3.4) PRINT *, 'R=',15.6,'C=',C(15.6) PRINT *, 'R=',567.3,'C=',C(567.3) END program z3 !子程序 FUNCTION C(R) PI=3.1415926 C=2*PI*R RETURN ! Body of z3 end

2)实例4—键盘与显示器输入/输出 a)Fortran 基本操作 b)程序指令 ! ZXZ_I_O.f90 ! FUNCTIONS: ! ZXZ_I_O - Entry point of console application. ! PROGRAM: ZXZ_I_O ! PURPOSE: Entry point for the console application. !***************输入、输出样式种种************************** program ZXZ_I_O implicit none !变量声明的位置 INTEGER(2) i; INTEGER(4) j; INTEGER(4) m; REAL n INTEGER A,B ! Variables PRINT*,'输入整数A'; READ*, A PRINT*,'输入整数B'; READ*, B B=A+B PRINT*,'B=A+B=',B WRITE(*,*) 'A*B=',A*B PRINT* ,'以上为计算机的计算结果,注意B的值'

fortran心得

Read 的规则: 按行读取,每次读一行,读完后光标自动跳到下一行的开头,空格和逗号代表结束(所以空格和逗号也是读取的一部分的话,需要使用“输入输出格式”) 如果想要将一行数据读入数组,代码为: Read(10,*) s(:,:,:) 不用规定输入输出格式,因为会根据s(:,:,:)确定需要读入的数字的个数,然后fortran会按部就班的读取,甚至文件中当前这一行的数字个数不足以填满s(:,:,:)的时候,read会自动跳到下一行继续搜索数字,直到填满s(:,:,:)为止。 但是需要注意给数组赋值的顺序:read会把它搜索到的第一个数字给s(1,1,1),第二个给s(2,1,1),第三个给s(3,1,1)… 程序9 1: 将read(unit=field,fmt="(A79)",iostat=status)buffer 中的A79改为A2,结果只输出每行的前两个字符,说明read是按整行整行读取的。 中间空了几行之后,空行之后的内容还是能被读取和输出,这说明,空行和空白是不一样的:空行也算是一种文本内容,因此不会终止读取,而空白意味着结束。 !读取文件 program main implicit none character(len=79)::filename="number.txt",buffer integer,parameter::field=10 integer::status=0 logical alive inquire(file=filename,exist=alive) if(alive)then open(unit=field,file=filename) do while(.true.) read(unit=field,fmt="(A79)",iostat=status)buffer if(status/=0)exit write(*,"(A79)")buffer end do else write(*,*)filename,"does't exist." end if pause stop end program main ============================================= 附number.txt =============================== 1234555666

Fortran95 简介-全文版

Fortran95简介-全文版 By陈鲸太FORTRAN的演进 FORTRAN的起源,要追溯到1954年IBM公司的一项计划。由JOHN BACKUS 领导的一个小组,尝试着在IBM 704计算机上面发展一套程序,它可以把使用接近数学语言的文字,翻译成机械语言。这个计划在刚开始并不被大家看好,但他们在1957年交出了成果,也就是第一套FORTRAN编译器,FORTRAN语言也就因此诞生了。FORTRAN语言的执行效率普遍的令各界满意,它证明了这项计划的可行性,也成为第一个被广泛使用的高级语言。FORTRAN的名字来自于英文的FORMULA TRANSLATOR这两个字,而这两个字恰是数学公式翻译器的意思。 旧版的FORTRAN77是在1978年由美国国家标准局(ANSI)所正式公布的,之后改版有1992年提出的FORTRAN90以及1997年的FORTRAN95,本文是为了FORTRAN 95所撰写。 编译器简介 1、VISUAL FORTRAN VISUAL FORTRAN一开始是起源于MICROSOFT的FORTRAN POWERSTATION 4.0,这套工具后来卖给DIGITAL公司来继续发展,下一个版本称为DIGITAL VISUAL FORTRAN 5.0,DIGITAL后来被COMPAQ合并,所以接下来的6.0及6.5版就称为COMPAQ VISUAL FORTRAN。而COMPAQ目前又跟HP合并,也许下一个版本会称为HP VISUAL FORTRAN。 VISUAL FORTRAN被整合在一个叫作MICROSOFT VISUAL STUDIO的图形接口开发环境中,VISUAL STUDIO提供一个统一的使用接口,这个接口包括文书编辑功能,PROJECT的管理、除错工具等等,所以在使用上其实跟上学期的VISUAL C++满类似的,同学们上课用过VISUAL C++,对 VISUAL FORTRAN应该不会陌生。 VISUAL FORTRAN 6.5除了完全支持FORTRAN 95的语法外,扩充功能方面提供完整的WINDOWS程序开发工具,专业版还内含IMSL数值链接库。 另外它还可以和VISUAL C++直接互相连结使用,也就是把FORTRAN和C 语言的程序代码混合编译成同一执行档案。 2、在工作站使用FORTRAN 学校计中工作站也提供FORTRAN COMPILER,使用方式很简单,只需要在存放FORTRAN档案的目录下面输入下面叙述即可:

中国海洋大学Fortran程序考试典型题

1、找出100-150之间和400-450之间能被9整除的数 2、找出100-999之间的回文数 3、找出水仙花数

4、输出“*”图形 5、输入n个数,找出大于平均值的数和最小数

6、把一个数值型数组的相同数删除到只剩一个 7、形成一个5*5矩阵,对角线元素为“i”,其余为“j”program juzhen implicit none integer I,J integer,parameter::size=5 integer::a(size,size) forall(I=1:size,J=1:size,I>J) a(I,J)=j forall(I=1:size,J=1:size,I==J) a(I,J)=i forall(I=1:size,J=1:size,I

integer,allocatable::c(:) write(*,*) "输入数组A的数据个数" read(*,*) n write(*,*) "输入数组B的数据个数" read(*,*) m l=m+n allocate (a(n)) allocate (b(m)) allocate (c(l)) write(*,*) "从小到大输入A的元素" do i=1,n read(*,*) a(i) end do write(*,*) "从小到大输入B的元素" do i=1,m read(*,*) b(i) end do do i=1,n c(i)=a(i) end do i=1 do while(i=c(n))then n=n+1 c(n)=b(i) goto 10 else if(b(i)>c(j).and.b(i)

Fortran中批量处理文件的方法总结

Fortran中批量处理文件的方法总结 —循环读取目录下的所有符合条件的文件 一、简单的介绍 在一年之前,我写过一个程序,主要是对Micaps资料进行批量处理,将逐日资料处理为旬、月的数据,在那个程序中,始终有一个问题困扰我,就是如何自动生成该读取的下一个文件名,这使我真正开始关注fortran中的批处理,时隔一年,决定写下这些文字,将我用到的一些fortran批处理的方法和大家共享,交流。 对于那些只要会用程序,不求其中原理的朋友,请马上跳过这些文字,直接去下载附件吧!程序里有使用说明,但是,如果你不懂原理,估计现成的程序你使用起来也会碰壁哦! 这里所说的批处理是指对某一个目录下的指定后缀的文件的批量读取和处理。 我总结的批处理方法大概可以用下面这个示意图来说明: | | |将文件目录写入一个文本文件,供fortran循环读取 |————手动输入文件名 |————运行程序之前命令行工具导出文件名 |————程序运行后,未开始计算之前,生成文件名 | ————调用CMD命令生成 | ————GETFILEINFOQQ方法生成 | ————调用WIN32API生成 | |在程序运行时动态生成文件名 | | 对于第一种方法,我将主要介绍如何将目录写入文件,然后举出一个小的示例来验证。第二种方法主要是说明其思路。 二、方法的介绍 1、将文件目录写入一个文本文件,供fortran循环读取

1.1、手动输入文件名 这是最基本的方法啦,如果文件个数不多,而且文件名中包含了空格等特殊字符的话,建议使用这种方法,在这里就不多说啦,至于在fortran中的处理,等几个小方法介绍完之后会有一个例子来说明。 1.2、运行程序之前命令行工具导出文件名 这是一个既高效又保险的方法,主要思路就是通过强大的CMD命令列出目录下的文件到一个指定的文件中,然后由fortran去循环读取该文件中的文件名信息,从而批量处理。 a、从运行工具打开你的CMD窗口; b、转到要处理的当前目录(可省略):CD /d 路径,如: CD /d e:\test 这样可以快速到达e:\test目录 c、使用DIR命令列出文件目录信息到指定的文件,通常使用的 Dir *.*>新文件名这个命令在这里已经不能满足要求,因为会列出一堆对于我们处理而言无用的信息,现在要使用的命令是: DIR /b filter>newfile 注意,其中的filter为文件筛选,必须自己修改为所需的,比如你可以把它改成*.txt,这样,就会列出当前目录下的所有txt结尾的文件了。 Newfile就是你需要存放文件名的那个文件,比如可以是 dir.txt,这样就成了 dir /b*.txt>dir.txt,就会把当前目录下的所有文件都列出到dir.txt文件中,当然,由于dir.txt也在当前目录,所以也会被算进去,这在处理的时候是需要注意的,下面几种方法中同样考虑了这个问题。你可以选择手动删掉,或者把dir.txt这个文件存到其他地方去,或者,不要和你需要的文件具有相同的后缀也行,比如:dir /b *.txt>e:\dir.txt (假设当前目录是e:\test) 如果省略了第二步中的转到当前目录的话,就需要在dir命令后输入完整的路径了,而且新生成的文件也要选择有权限建立新文件的地方存放,比如你在c:\users目录下输入:dir /b e:\test\*.txt>e:\dir.txt,这个命令和上面先转到e:\test目录下的效果是一样的。 现在你是不是比较好奇,/b 是干嘛的,其实就是只列出文件名,不要其他的附件信息,比如创建时间,文件大小等等这些对于我们批处理无关的信息。 如果你想包含某个目录下的子目录,那么,就可以这样写: Dir /b/s filter>newfile /s就表示包含子目录,但是,这样会有一个问题,那就是,批处理的时候必须获得正确的路径才能操作,这样得到的子目录里面的文件不会有任何标志说

FORTRAN程序设计复习题及答案

FORTRAN程序设计复习题 一、选择题 B (1)下列各FORTRAN表达式中合法的是 A) S+T*2P >= B) .NOT. (A*B+C) C) A2+B2/(C+D) <= D) (A+B).NOT.A*B.GT.(.NOT.只跟一个表达式) C (2)数学式(3/5)ex+y的FORTRAN表达式是 A) 3*EXP(X+Y)/5 B) 3*E* *(X+Y)/ C) (3/5)*EXP(X+Y)D) EXP(X+Y) D (3)下列FORTRAN77表达式中不合法的是 A) A.GT.B.EQV.C.GT.D B) A.AND.B.AND.C.AND.D C) .NOT.(X.LE.D) A.LT.B.LT.C.LT.D D(4)下列叙述中不正确的是 A) FORTRAN子程序可以单独编译 B) 对一个FORTRAN源程序进行编译和连接无误后可生成可执行文件 C) 即使编译和连接都正确无误,FORTRAN程序运行时仍可能出错 D) FORTRAN连接的主要任务是把函数库中的函数翻译成机器指令(正确描述:主要任务为连接目标文件) B (5)在下列FORTRAN77运算符中,优先级最高的是 A) .AND. B) .NOT. C) .OR. D) .EQ. B (6)FORTRAN表达式"6/5+9/2**3/2"的值为 A) 33 B) 1 C) 5 D) 3 A (7)下列FORTRAN77表达式中,合法的是: A) .AND.. B) 10.0 C) D) 提示:A)相当于 .AND.(.NOT.()) D (8)关于编译一个FORTRAN源程序文件,下列说法中错误的是 A) 允许编译只有一个主程序而没有子程序的源文件 B) 允许编译有多个子程序的源文件 C) 允许编译只有一个子程序而没有主程序的源文件 D) 允许编译有多个主程序的源文件 C (9)在FORTRAN77源程序中,续行标志符必须放在 A) 第1列 B) 第1-6列C) 第6列D) 第5列 D (10)下列关于"SUBROUTIN E MAP(X,Y)"语句行的叙述中,不正确的是 A) 这是子程序的第一个语句 B) 字符串"MAP"是子程序名 C) 变量X是子程序的形参D) 子程序执行后,MAP将返回整型数据 提示:子程序无返回值,自定义函数才有) A (11)FORTRAN表达式"2/4+"的值是 A) B) 1 C) D) 0 提示:2/4默认等于整型,=》 D (12)FORTRAN表达式"MOD,"的值是 A) B)0.0 C) D) A (13下列FORTRAN运算符中,优先级最低的是 A)逻辑运算符.AND. B)算术运算符*

几个fortran程序

计算圆周率 REAL R,R1,R2,PI ISEED=RTC() N0=0 N=300000 DO I=1,N R1=RAN(ISEED) R2=RAN(ISEED) R=SQRT(R1*R1+R2*R2) IF(R<1.0)N0=N0+1 END DO PI=4.0*N0/N WRITE(*,*)PI END 一)蒙特卡洛计算生日问题 假设有N个人在一起,各自的生日为365天之一,根据概率理论,与很多人的直觉相反,只需23个人便有大于50%的几率人群中至少有2个人生日相同。 INTEGER M(1:10000), NUMBER1(0:364), NUMBER2 REAL X,Y ISEED=RTC() DO J=1, 10000 NUMBER1=0 X=RAN(ISEED) NUMBER1(0)=INT(365*X+1) JJJ=1 DO I=1,364 Y=RAN(ISEED) NUMBER2=INT(365*Y+1) ETR=COUNT(NUMBER1.EQ.NUMBER2) IF (ETR= =1) THEN EXIT ELSE JJJ=JJJ+1 M(J)=JJJ NUMBER1(I)=NUMBER2 END IF END DO END DO DO I=1,10000 IF(M(I).LE.23) SUM=SUM+1 END DO PRINT *,SUM/10000 END 二)MONTE CARLO SIMULATION OF ONE DIMENSIONAL DIFFUSION 蒙特卡罗计算一维扩散问题

INTEGER X,XX(1:1000,1:1000) REAL XXM(1:1000) ! X:INSTANTANEOUS POSITION OF ATOM ! XX(J,I):X*X ,J:第几天实验,I:第几步跳跃 ! XXM(I): THE MEAN OF XX WRITE(*,*) "实验天数JMAX,实验次数IMAX" READ(*,*) JMAX,IMAX ISEED=RTC() DO J=1,JMAX !第几天实验 X=0 !!! DO I=1,IMAX !第几步跳跃 RN=RAN(ISEED) IF(RN<0.5)THEN X=X+1 ELSE X=X-1 END IF XX(J,I)=X*X END DO END DO OPEN(1,FILE="C:\DIF1.DAT") DO I=1,IMAX XXM=0.0 XXM(I)=1.0*SUM(XX(1:JMAX,I))/JMAX !! WRITE(1,*) I, XXM(I) END DO CLOSE(1) END 三维的! 三)通过该程序了解FORTRAN语言如何画图(通过像素画图)USE MSFLIB INTEGER XR,YR !在的区域中画一个圆 PARAMETER XR=400,YR=400 INTEGER R, S(1:XR,1:YR) X0=XR/2 ! 圆心位置X0,YO Y0=YR/2 R=MIN(X0-10,Y0-10) !圆半径 S=0 !像素的初始状态(颜色) DO I=1,XR DO J=1,YR IF((I-X0)**2+(J-Y0)**2<=R**2)S(I,J)=10 IER=SETCOLOR(S(I,J)) IER=SETPIXEL(I,J) END DO END DO END

FORTRAN学习中的一些小心得

F O R T R A N学习中的一些小心 得 -标准化文件发布号:(9556-EUATWK-MWUB-WUNN-INNUL-DDQTY-KII

FORTRAN 心得 第一部分:一些小心得 1 Fortran不区分大小写 2 Fortran有5种基本数据类型,integer,real, character, logical, complex 3 fortran fixed format格式中的变量赋初值一般用DATA,因为它不能用:: 4 real(kind=8) a这种格式只使用于Fortran90,Fortran77中要使用 real*8或real(8) 5 FORTRAN中FREE与FIXED两种格式do循环的区别: Fortran 95使用end do来结束循环。 Fortran 77使用DO循环要麻烦一点,它不使用END DO来结束循环,而是使用行号来结束循环,程序代码要在DO的后面写清楚这个循环到哪一行程序代码结束。 Fortran 77中,经常会使用CONTINUE这个命令来结束循环。因为CONTINUE这个命令没有实际的用途,刚好可以拿来做封装使用。 6 循环的流程控制: 循环中的cycle命令相当于c++里的continue命令,用于结束一次循环 循环中的exit命令好比c里面的break,用于结束循环 7 不使用do循环,单纯用GOTO语句也能设计循环程序,但不推荐使用GOTO 语句 7 fortran有等价声明:即用equivalence(a,b),这样使得a,b使用同一块内存,这样可以节省内存,有时可精简代码。 8 fortran77中只能用单引号。(还有疑问,因为fixed format能用双引号) 9 逻辑运算符 == /= > >= < <= !Fortran90用法 .EQ. .NE. .GT. GE. .LT. .LE. !Fortran77用法 9 PAUSE,CONTINUE,STOP pause 暂停程序执行,按enter可继续执行 continue 貌似没什么用处,可用作封装程序的标志 STOP 命令用来结束程序,要谨慎使用 10 数组元素之间要用逗号分隔,而不能像matlab一样既可以用逗号也可以用空格,fortran的数组元素之间不能用空格。 11 数组的声明: Fortran 77中数组的声明,必须使用DIMENSION命令 Integer a; !先声明a是整型 Dimension a(10) !再声明a是大小为10的数组 Fortran 95中可以用简单的方法: Integer a(10) !最简单的方法

Fortran95简介-全文版

Fortran95簡介-全文版 By陳鯨太FORTRAN的演進 FORTRAN的起源,要追溯到1954年IBM公司的一項計畫。由JOHN BACKUS 領導的一個小組,嘗試著在IBM 704電腦上面發展一套程式,它可以把使用接近數學語言的文字,翻譯成機械語言。這個計畫在剛開始並不被大家看好,但他們在1957年交出了成果,也就是第一套FORTRAN編譯器,FORTRAN語言也就因此誕生了。FORTRAN語言的執行效率普遍的令各界滿意,它證明了這項計畫的可行性,也成為第一個被廣泛使用的高階語言。FORTRAN的名字來自於英文的FORMULA TRANSLATOR這兩個字,而這兩個字恰是數學公式翻譯器的意思。 舊版的FORTRAN77是在1978年由美國國家標準局(ANSI)所正式公布的,之後改版有1992年提出的FORTRAN90以及1997年的FORTRAN95,本文是為了FORTRAN 95所撰寫。 編譯器簡介 1、VISUAL FORTRAN VISUAL FORTRAN一開始是起源於MICROSOFT的FORTRAN POWERSTATION 4.0,這套工具後來賣給DIGITAL公司來繼續發展,下一個版本稱為DIGITAL VISUAL FORTRAN 5.0,DIGITAL後來被COMPAQ合併,所以接下來的6.0及6.5版就稱為COMPAQ VISUAL FORTRAN。而COMPAQ目前又跟HP合併,也許下一個版本會稱為HP VISUAL FORTRAN。 VISUAL FORTRAN被整合在一個叫作MICROSOFT VISUAL STUDIO的圖形介面開發環境中,VISUAL STUDIO提供一個統一的使用介面,這個介面包括文書編輯功能,PROJECT的管理、除錯工具等等,所以在使用上其實跟上學期的VISUAL C++滿類似的,同學們上課用過VISUAL C++,對VISUAL FORTRAN應該不會陌生。 VISUAL FORTRAN 6.5除了完全支援FORTRAN 95的語法外,擴充功能方面提供完整的WINDOWS程式開發工具,專業版還內含IMSL數值程式庫。另外它還可以和VISUAL C++直接互相連結使用,也就是把FORTRAN和C語言的程式碼混合編譯成同一執行檔案。 2、在工作站使用FORTRAN 學校計中工作站也提供FORTRAN COMPILER,使用方式很簡單,只需要在存放FORTRAN檔案的目錄下面輸入下面敘述即可: ccsun33 [u8623033/fortran]% f77 filename.for

fortran程序30个

程序1 PROGRAM chaper1272 INTEGER :: A(10)=(/5,7,4,8,12,2,10,3,9,11/) INTEGER :: sum=0,ave !打开一数据文件,设置一个有格式直接存取文件,将10个数分2个记录写入文件。 !数据文件生成2个记录,每个记录行长度相同,记录长度为25 OPEN(1,FILE='input21.dat',FORM='FORMATTED',ACCESS='D IRECT',RECL=25) WRITE(1,"(5I5)",REC=1)(A(I)+10,I=1,5) !按格式说明将头5个数写入第1个记录 WRITE(1,"(5I5)",REC=2)(A(I)+10,I=6,10)!按格式说明将后5个数写入第2个记录 READ(1,"(5I5)",REC=2)(A(I),I=6,10) !按格式说明从第2个记录中读取后5个数 READ(1,"(5I5)",REC=1)(A(I),I=1,5) !按格式说明从第1个记录中读取头5个数 DO I=1,10 sum=sum+A(I) ENDDO ave=sum/10 !打开一个最大记录长度为22的有格式顺序存取文件

OPEN(2,FILE='input22.dat',FORM='FORMATTED',ACCESS='D IRECT',RECL=22) WRITE(2,"('10个数之和为:',I5)",REC=1) sum !输出1记录行,记录长度为22 WRITE(2,"('10个数平均值为:',I5)",REC=2)ave !输出1记录行,记录长度为22 WRITE(2,"(A)",REC=3) '程序运行正常结束。' !输出一个记录行,记录长度为22 END 程序2 PROGRAM average REAL sum,ave INTEGER n OPEN(1,file='score.dat') PRINT*,'正在统计平均成绩,请等待。' sum=0.0;n=0 DO READ(1,*,END=100) S sum=sum+s n=n+1 ENDDO 100 ave=sum/n

MATLAB课程设计实验体会

课程设计实验体会 学生姓名:李祥胜 学生学号:20120704 专业班级:光信息科学与技术 指导老师:miss Chen 学院:信息工程学院 题目: MATLAB学期实验总结

MATLAB概念及介绍 MATLAB是matrix&laboratory两个词的组合,意为矩阵工厂(矩阵实验室)。是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。 MATLAB和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。 MATLAB集成环境主要包括五个部分:MATLAB语言、MATLAB工作环境、句柄图形、MATLAB数学函数库和数学建模、小波分析、MATLAB API(App lication Program Interface)。MATLAB语言是以数组为基本数据单位,包括控制流程语句、函数、数据结构、输人输出及面向对象等特点的高级语言。利用SIMULINK对系统进行仿真与分析,在进入虚拟实验环境后,不需要书写代码,只需使用鼠标拖动库中的功能模块并将它们连接起来,再按照实验要求修改各元器件的参数。通过虚拟实验环境建立实验仿真电路模型,可使一些枯燥的电路变得有趣味,复杂的波形变得形象生动,使得各种复杂的能量转换过程比较直观地呈现。 1.1、MATLAB语言特点及优势 1.1.1、语言特点 MATLAB被称为第四代计算机语言,利用其丰富的函数资源,使编程人员从繁琐的程序代码中解放出来。MATLAB的最突出的特点就是简洁。MATLAB用更直观的、符合人们思维习惯的代码,代替了C和FORTRAN语言的冗长代码。MATLAB 给用户带来的是最直观、最简洁的程序开发环境。以下简单介绍一下MATLAB的主要特点。 (1)语言简洁紧凑,使用方便灵活,库函数极其丰富。MATLAB程序书写形式自由,利用其丰富的库函数避开繁杂的子程序编程任务,压缩了一切不必要的编程工作。由于库函数都由本领域的专家编写,用户不必担心函数的可靠性。 (2)运算符丰富。由于MATLAB是用C语言编写的,MATLAB提供了和C语言几乎一样多的运算符,灵活使用MATLAB的运算符将使程序变得极为简短,具体运算符见附表。 (3)MATLAB既具有结构化的控制语句(如for循环、while循环、break语句和if语句),又有面向对象编程的特性。 (4)语法限制不严格,程序设计自由度大。例如,在MATLAB里,用户无需对矩阵预定义就可使用。 (5)程序的可移植性很好,基本上不做修改就可以在各种型号的计算机和操作系统上运行。

FORTRAN 95 语法速查

FORTRAN 95 语法速查 ----------白云、李学哲、陈国新、贾波编著《FORTRAN95程序设计》读书笔记 目录:一、应用程序的创建与运行/FORTRAN 95所用的字符/ 变量类型及其声明,常量声明/表达式与运算符 二、输入与输出:表控、有格式 三、选择语句与结构:IF语句、CASE结构 四、DO循环结构 五、数组:数组的声明,数组的引用,数组的算术运算,数组的输入、输出,给数组赋初值, 动态数组,WHERE、FORALL语句 六、子程序:语句函数,内部子程序,调用子程序时的虚实结合:形参为数组、非定界数组、子 程序名、星号,递归子程序,外部子程序,纯子程序,逐元子程序 七、派生数据类型与结构体 八、指针与动态链表 九、文件:存取方式,基本操作语句,各类文件的读写操作 十、接口、模块 十一、公用区、存储关联、数据块子程序 十二、绘图:坐标系、设置图形颜色、创建图形程序/ 常用过程:设置线型、绘一像素点、设置当前位置、绘直线、绘弧线、绘矩形、绘多边形、绘制扇形(圆、椭圆)/ 文字信息的显示 附/录:标准函数与标准子例行程序 一、基础部份 1-1 FORTRAN 95 应用程序的创建与运行 创建或运行FORTRAN 95程序必须在Microsoft Developer Studio平台上进行。尽管程序文本及相关文件的编辑可以在任一文本编辑器上进行,然后再拷到Studio的文档窗口中。但最好还是一开始就进入Studio环境。创建FORTRAN 95 程序的步骤大致如下: 1)启动Microsoft Developer Studio 可以通过不同方式运行dfdev.exe程序以启动Microsoft Developer Studio [开始] \ Compaq Visual Fortran 6 \ Developer Studio \ dfdev.exe:或 ……\CVF66 \https://www.wendangku.net/doc/db16689798.html,\MSDEV98\dfdev.exe Microsoft Developer Studio的界面如下图所示: 文档窗口 工作空间窗口 输出窗口

相关文档
相关文档 最新文档