FORTRAN经典入门程序20例

FORTRAN经典入门程序20例
FORTRAN经典入门程序20例

对于FORTRAN 的初学者。这些例子可作为小练习。

1.例题:计算工资问题。每小时工资为RATE, 如果工作超过40小时,加班呢部分工资是正常时间工资的1.5倍。

C Payroll with overtime program payroll real rate, hours, pay read (*,*) rate, hours if (hours>40) then

pay=40*rate+(hours-40)*1.5*rate

print *, "pay=" ,pay end

2.学生成绩问题。大于80为A级。大于60小于80为B级。小于60为C级。IF的嵌套。注意空格可以看清楚else if ,end if,print 的内容.

PROGRAM GRADESTUDENT

READ *,GRADE

IF (GRADE .GE. 80) THEN

PRINT *,GRADE, "GRADE=>A"

ELSE

IF (GRADE.LT.60) THEN

PRINT *,GRADE, "GRADE=>C"

ELSE

PRINT *,GRADE, "GRADE=>B"

END IF

END IF

END

3.三个数按从小到大排序。

PROGRAM MAXMIN

REAL A,B,C,T

READ *,A,B,C

IF (A.GT.B) THEN

END IF

IF (B.GT.C) THEN

T=B

B=C

PRINT *,A,B,C

END

4.运用EISE IF 语句。重做例子2

PROGRAM ex2

READ (*,*) GRADE

IF (GRADE .GE. 80.0) THEN

PRINT *, GRADE, "=>A"

ELSE IF(GRADE .GE. 70.0) THEN

PRINT *, GRADE, "=>B"

ELSE IF(GARDE .GE. 60.0) THEN

PRINT *, GRADE, "=>C"

ELSE

PRINT *, GARDE, "=>D"

END IF

END 5. 计算y 3x26,x 0

x2 2x 8,x 0

END

6.CONTINUE 语句。为了使循环的起止范围清晰,使用终端语句例:求5!program ex1

FACT=1

do 10, N=1,5,1 ##DO 语句标号,循环不变量=初值,终值,步长FACT=FACT*N 10 continue

print*,FACT

end

求1!+2!+3!+···+N!

READ *,N

FACT=1

sum=0.0

do 10, I=1,N,1

FACT=FACT*I

SUM=SUM+FACT

10 continue

print*,SUM

end

7.求E^X=1+X+X^2/2!+X^3/3!+...+X^N/N!

READ *,X,N

sum=1

TERM=1

do 10, I=1,N,1

TERM=TERM*X/I

SUM=SUM+TERM

10 continue

print*, "EXP(" ,X, ")" ,SUM end

8.打印九九乘法表

do 10,I=1,9,1

do 20,J=1,I 20 CONTINUE 10 CONTINUE

end

9.百钱买百鸡

公鸡5元每只。母鸡3元每只,小鸡1元三只。求100 元买一百只鸡

INTEGER X,Y,Z

DO 10,X=0,100

DO 20,Y=0,100

DO 30,Z=0,100

IF(X+Y+Z .EQ. 100) THEN

IF(15*X+9*Y+Z .EQ. 300) PRINT *,X,Y,Z

END IF

30 CONTINUE

20 CONTINUE

10 CONTINUE

END

10.DO 循环用来处理循环次数确定的情况比较方便。在处理无法事先知道循环次数时,使

用当型循环。

(1)DO WHILE DO 标号,WH ILE(逻辑表达式)

CONTINUE 标号

例统计若干同学的得分并计算平均值。INTEGER SCORE,COUNT

READ *,SCORE

SUM=0

COUNT=0

DO 10, WHILE (SCORE .GT. 0.0)

PRINT *,I, "*"

SUM=SUM+SCORE

COUNT=COUNT+1

READ *,SCORE

10 CONTINUE

AVER=SUM/COUNT

PRINT *,AVER

END

11.辗转相除法求最大公约数。如26 和6 的最大公约数。先用27 除以6,余数是3,再用6 除以3,余数为0,则3 就是最大公约数。命令MOD() 求余数。

INTEGER M,N,R,T

READ *,M,N

IF (M .LT. N) THEN

T=M

M=N

N=T

END IF

R=MOD (M,N)

DO 10, WHILE (R .NE. 0)

M=N

N=R

R=MOD (M,N)

10 CONTINUE

PRINT *, "zui da gong yue shu",N

END

12.判断一个数是否是素数。SQRT()开根号

READ *,N

MAX= sqrt(real(N))

I=2

DO 10, WHILE (I .LE. MAX .AND. MOD (N,I) .NE. 0)

I=I+1

10 CONTINUE

IF(I .GT. MAX) THEN

PRINT *,N, "IS A PRIME NUMBER"

ELSE

PRINT *,N, "IS NOT A PRIME NUMVER"

END IF

END

13.求100和200之间能被3或7整除的自然数。

I=100 10 IF(I .LE. 200) THEN

IF (MOD (I,3) .EQ. 0 .OR. MOD (I,7) .EQ. 0) THEN

PRINT *,I, "ABLE"

ELSE

PRINT *,I, "UNABLE" END IF

I=I+1

GOTO 10

END IF

END

14.直到型循环,UNTIL 语句实现直到型循环。

格式“ DO S1,UNTIL( 条件)

循环体

标号S1 CONTINUE

例14 用直到型循环求5 !FORTRAN 不支持UNTIL 语句。

INTEGER I,PRODUCT

I=1

PRODUCT=1

DO 10, UNTIL (I .GT. 5)

PRODUCT=PRODUCT*I

I=I+1

10 CONTINUE

PRINT *, "5!=" ,PRODUCT

END

FORTRAN 不支持UNTIL 语句。让我们改成DO WHILE 格式。INTEGER I,PRODUCT I=1

PRODUCT=1

DO 10, WHILE (I .LT. 5)

PRODUCT=PRODUCT*I

I=I+1

10 CONTINUE

PRINT *, "5!=" ,PRODUCT

END

15.

INTEGER R,I,J,S,T,SUM

DO 10, I=100,999,1

T=I

SUM=0

DO 20 ,J=1,3,1

R=MOD (T,10)

SUM=SUM+R**3

T=T/10 20 CONTINUE

IF (SUM .EQ. I) PRINT *,I, "is a daffodil NUMBER"

10 CONTINUE

END

Ax2Bx C 0

DOUBLE PRECISION A, B, C

COMPLEX X1,X2 READ *,A,B,C IF(B**2-4*A*C .GE.0) THEN

X1=CMPLX ((-B+SQRT(B**2-4*A*C))/(2*A),0.0)

X2=CMPLX ((-B- SQRT(B**2-4*A*C))/(2*A),0.0) ELSE

X1=CMPLX ((-B/(2*A)), SQRT(-(B**2-4*A*C))/(2*A))

X2=CMPLX ((-B/(2*A)),- SQRT(-(B**2-4*A*C))/(2*A)) END IF PRINT *,X1,X2

END

16. 打印此图

CHARACTER *9 LINE

DO 10, I=-4,4,1

K=1

DO 40 J=1,ABS(I),1

LINE(K:K)= " "

K=K+1

40 CONTINUE

DO 20, J=1, 2*(4-ABS(I))+1,1

LINE(K:K)= "*" K=K+1

20 CONTINUE

PRINT *,LINE

DO 30, J=1,9,1 LINE(J:J)= " " 30 CONTINUE 10 CONTINUE END

17. 输出数组中的数值。

INTEGER A(1:10) DO 10,I=1,10,1 READ *,A(I)

10 CONTINUE PRINT *,A END

18.

利用 DO 循环对数组进行输入和输出。从键盘上输入十个数,按顺序逐个放入到

19.

双重循环将从终端读入的数据赋值给 W 数组中的各元素。

REAL W(1:3,1:2) ##表示一个三行两列的数组,当前面数一样时,可以写出 W(3,2) DO 10,I=1,3,1 DO 20, J=1,2,1

20。输入 10名学生的成绩,统计各个分数段的人数。

INTEGER GRADE(1:10),COUNTER(0:10)

READ *,(GRADE(I),I=1,10,1)

DO 10, I=1,10,1 COUNTER(GRADE(I)/10)=COUNTER(GRADE(I)/10)+1

10 CONTINUE

DO 20,I=0,10,1

PRINT *,COUNTER(I), "=>" ,I*10,(I+1)*10-1

20 CONTINUE

END

21. 顺序查找。一组数据从第一个开始找,折半查找,顺序查找适用数据少的情况,折半查找用于数 据多的情况,但数据必须按顺序排列。

INTEGER A(1:7)

A(1)到A(10) 中

DATA A/55,62,10,58,22,33,66/ READ *,X

DO 10, I=1,7,1

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)算术运算符*

Fortran95程序设计课后习题答案(word版方便)

第四章 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.p rogram 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 implicit none integer money real tax write(*,*) "请输入月收入" read(*,*) money if ( money<1000 ) then tax = 0.03 else if ( money<5000) then tax = 0.1 else tax = 0.15 end if write(*,"(' 税金为'I8)") nint(money*tax) end program 2.program main implicit none integer day character(len=20) :: tv write(*,*) "请输入星期几" read(*,*) day select case(day) case(1,4) tv = "新闻" case(2,5) tv = "电视剧" case(3,6) tv = "卡通" case(7) tv = "电影" case default write(*,*) "错误的输入" stop end select write(*,*) tv end program 3.program main implicit none integer age, money real tax write(*,*) "请输入年龄" read(*,*) age write(*,*) "请输入月收入" read(*,*) money if ( age<50 ) then if ( money<1000 ) then tax = 0.03 else if ( money<5000 )then tax = 0.10 else tax = 0.15 end if else if ( money<1000 ) then tax = 0.5 else if ( money<5000 )then tax = 0.7 else tax = 0.10 end if end if write(*,"(' 税金为'I8)") nint(money*tax) end program 4.program main implicit none integer year, days logical mod_4, mod_100, mod_400 write(*,*) "请输入年份" read(*,*) year mod_4 = ( MOD(year,4) == 0 ) mod_100 = ( MOD(year,100) == 0 ) mod_400 = ( MOD(year,400) == 0 ) if ( (mod_4 .NEQV. mod_100) .or. mod_400 ) then days = 366 else days = 365 end if write(*,"('这一年有'I3'天')") days stop end program 第六章 1.program main implicit none integer i do i=1,5 write(*,*) "Fortran" end do stop end program 2.program main implicit none integer i,sum sum = 0 do i=1,99,2 sum = sum+i end do write(*,*) sum stop end program 3.program main implicit none integer, parameter :: answer = 45 integer, parameter :: max = 5 integer weight, i do i=1,max write(*,*) "请输入体重" read(*,*) weight if ( weight==answer ) exit end do if ( i<=max ) then write(*,*) "猜对了" else write(*,*) "猜错了" end if stop end program 4.program main implicit none integer, parameter :: max=10 integer i real item real ans ans = 1.0 item = 1.0 do i=2,max item = item/real(i) ans = ans+item

计算机程序设计语言(FORTRAN语言)

计算机程序设计语言(FORTRAN语言) (总分:36.00,做题时间:90分钟) 一、 (总题数:36,分数:36.00) 1.编译程序能将高级语言编写的源程序转换成( )。 A.解释程序 B.汇编程序 C.映象程序 D.目标程序 (分数:1.00) A. B. C. D. √ 解析: 2.一个完整的FORTRAN源程序( )。 A.至少包括一个主程序 B.至少包括一个主程序和一个子程序 C.由一个主程序与一个以上的子程序组成 D.由一个主程序与一个子程序组成 (分数:1.00) A. √ B. C. D. 解析: 3.语句函数定义语句在程序内合法的位置是( )。 A.在程序块开头语句之后,END语句之前 B.在程序块开头语句之后,可执行语句之前 C.在说明语句之后,END语句之前 D.在说明语句之后,可执行语句之前 (分数:1.00) A. B. C. D. √ 解析: 4.下列关于函数子程序虚实参数的错误说法是( )。 A.可以没有形参数 B.虚实结合的数组长度可以不同 C.实参表与虚参表类型可以不同 D.函数名可以作为虚参

(分数:1.00) A. B. C. √ D. 解析: 5.下列叙述中正确的是( )。 A.FORTRAN程序块中,无名公用语句只能有一个B.FORTRAN子程序中,至少应有一个RETURN语句C.FORTRAN程序块中,最后一行必须是END语句D.FORTRAN程序块中,必须有变量说明语句 (分数:1.00) A. B. C. √ D. 解析: 6.运行下面的程序时得不到所需的结果,其主要原因是( )。INTEGER X(11) DATA X/9,8,7,6,5,4,3,2,1,0,-1/ DO 10 1=1,X(1) ,-1 WRITE(*,*)1.0/SQRT(25.0-REAL(X(1) )* * 2) 10 CONTINUE END A.没有给X(11) 赋初值 B.发生除以零的情况 C.发生负数开平方的情况 D.循环参数设置错误 (分数:1.00) A. B. C. D. √ 解析: 7.下列数据中,不符合FORTRAN常量表示法的是( )。 A.-25.6 B.2.758D3 C.'FOOT"=' D.TRUE (分数:1.00) A. B. C. D. √ 解析:

大学FORTRAN考试试题精修订

大学F O R T R A N考试试 题 标准化管理部编码-[99968T-6889628-J68568-1689N]

《高级语言程序设计(FORTRAN)》考试样题 一、选择题(每小题2分,共40分) 1. 下列标识符中不能作为FORTRAN的合法变量名的是_____D_____。 A) A_1 B) A1 C) A1A D) A+1 2. 在FORTRAN的变量类型说明语句中没有 B A) REAL语句B)CHAR语句C)INTEGER语句 D)LOGICAL语句 3.FORTRAN90 源程序的扩展名是 C 。 A. TXT B. F C. F90 D. FOR 4.下列关于符号常量的说法正确的是___C____。 A.符号常量的定义应该放在所有语句之前 B.符号常量不可以是字符型常量 C.在一个程序单位中定义一个符号常量后,不能再改变它的值 D.符号常量定义语句与赋值语句一样,是可执行语句 5、在下列写法中,__D______不是FORTRAN常量。 A. .TRUE. C. , ,000,000 6.表达式15/4/的值是 B 。 A.整数2 B.实数1.5 C.实数2.25 D.实数1. 3 7. 下列不是FORTRAN赋值语句的是 _____D______。 A) X=.TRUE. B) X=X*X C) X=X**2**2 D) X=X++ 8. 梯形的上底为A,下底为B,高为H,计算其面积的FORTRAN表达式中错误的是____A____。 A)1/2*(AB)*H B)(A+B)*H/2 C)(A+B)/2*H D)*(A+B)*H 9. 要选拔身高T>米且体重W<公斤的人,FORTRAN的逻辑表达式是__C_____。 A) B) C) D) 90规定,变量类型声明的优先顺序是 C 。 A.隐含约定(I-N规则)、IMPLICIT声明、类型声明 B.类型声明、隐含约定(I-N规则)、IMPLICIT声明 C.类型声明、IMPLICIT声明、隐含约定(I-N规则) 声明、类型声明、隐含约定(I-N规则) 11、假设CH是一个字符型变量,并且具有足够的长度,则对于CH(3:7),下面说法正确的是___D________。 A.它是一个数组片段 B.它是一个数组定义形式 C.它是CH的一个子串,并且长度是4 D.它是CH的一个子串,并且长度是5 12.数组声明语句为: INTEGER,DIMENSION(-5:-1,-3:3,11:15) ::A 数组共有 A 个元素。 A.175 B.150 C.120 D.17 13. 下列DATA语句中正确的是______C____。 A) DATA /A,B/, B) DATA A, B/2*/ C) DATA A, B/2* D) DATA A/, B/ 14. 下列有关FORTRAN数组的说法正确的是______D_____。 A) 数组定义语句只能定义一维或二维数组 B) 数组元素下标不能出现负值 C) 在赋值语句中出现的A(3)肯定是数组元素 D) 程序中使用的数组必须进行说明

工程分析程序设计上机作业一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 2、 从键盘输入三个角度值a, b, c ,计算如下式子的值: 22 34a b a b +- c b a b a tan |)||cos(|| |sin +++ 26ln()1403b c a ++ 3、 已知一圆柱底面半径R 为6.4,高为5,编程求圆柱底面圆周长、圆面积,圆柱的体积和表面积;以 R=6.4为半径的圆球表面积和体积、(要求在变量声明的同时赋初值) 4、 编写一个程序,要求完成以下要求: (1) 提示用户输入任意的3个小数; (2)显示这三个小数; (3)将这三个小数相加,并显示其结果; (4)将结果按四舍五入方法转换成整数并显示。 5、 有一个六边形,求其面积。为求面积,作了3条辅助线。如图所示:(提示,三角形面积 2 a b c s ++=,a 、b 、c 为三个边长)。 =21 6、 我国现在人口13.0亿人,假定每年增长率为1.5%,求n 年以后的人口数。n 从键盘输入。

7、 请写一个程序,可以让使用者输入初始速度V 0(单位为m/s )与角度θ(单位°),利用下列公式计算 飞行时间与距离: g V t /sin 20θ= t V D ?=θcos 0

Fortran用法小结

目录: 一、说明 二、概述 三、数据类型及基本输入输出 四、流程控制 五、循环 六、数组 七、函数 八、文件 一、说明 本文多数内容是我读彭国伦《Fortran 95 程序设计》的笔记。只读到第九章,主要是3~9 章,都是最基本的用法(原书共16章)。这里主要摘录了我看书过程中总结的一些Fortran和C不 同的地方,主要是语法方面。希望这份笔记能够给学过C但没有接触过Fortran的同学带去一些帮 助。要想得更清楚些,推荐看一下原书,觉得作者真的写得很好,很清楚;如果有C语言的基础, 看完前九应该很快的,花一两天就行了。觉得如果耐心看完本文,基本功能应该也可以顺利用起 来了。外,由于我之前没有用过Fortran,这次为了赶文档看书又看得很粗浅,大多数东西看过

之后都没得及仔细想,只是按着作者的意思去理解。所以这份笔记还处于纸上谈兵的层次。如果 有不妥的方,希望大家指正。谢谢! 文中蓝色的部分是程序代码,!后面的内容为注释。 二、概述 1、名词解释 Fortran=For mula Tran slator/Translation 一看就知道有什么特色了:可以把接近数学语言的文本翻译成机械语言。的确,从一开始 ,IBM设计的时候就是为了方便数值计算和科学数据处理。设计强大的数组操作就是为了实现这一 目标。ortran奠定了高级语言发展的基础。现在Fortran在科研和机械方面应用很广。 2、Fortran的主要版本及差别 按其发展历史,Fortran编译器的版本其实很多。现在在广泛使用的是Fortran 77和Fortr an90。ortran 90在Fortran 77基础上添加了不少使用的功能,并且改良了77编程的版面格式, 所以编程时推荐使用90。鉴于很多现成的程序只有77版本,有必要知道77的一些基本常识,至少保 证能够看77程序。以下是77和90的一些格式上的区别。

Fortran95课程设计

Fortran95 课程设计

目录 一,任务书...............................................................................1 二,员工档案(工资和个人所得税)..................................6 三,求解方程.........................................................................11 1,求解一元方程的根494-)(23++=x x x x f .. (11) 1-1,二分法求解 1-2,弦截法求解 1-3,Newton 迭代法求解 (13) 2,求方程的积分()dx x e x b a 5431+++?.......................................15 2-1,矩形法积分 2-2,梯形法积分 2-3,辛普生法积分 3,Gauss-Jordan 法求联立方程组 (18) ?? ???=++=++=++8z 2y x 7z y 2x 6z y x 四 ,课程总结 (22)

2012级FORTRAN 95程序设计语言课程设计任务书 一、实践目的 通过本课程设计、加深学生对所学程序设计语言的理解,培养其程序设计能力以及综合解决实际问题的能力。通过自己分析问题、分解问题、查找算法、编写、调试程序的过程,掌握FORTRAN 95程序设计与调试方法,提高应用所学知识借助计算机程序解决具体问题的能力。 二、设计任务 1、综合应用所学FORTRAN 95知识点解决具体问题。 某小型公司有员工25人,员工信息包括员工编号,姓名,性别,工龄,工资(为方便,视其为三险一金减除后的金额),现在需要对这25名员工按照其工资进行个人信息的排序,计算每个人的个人所得税并添加到个人信息中。请按以下要求进行设计 ⑴利用记事本创建员工基本信息文件。 ⑵设计包含以上信息内容的派生类和结构体数组。 ⑶以结构体数组为虚参编写排序子程序,可使用简单交换法、选择法和冒泡法中的任何一种。 ⑷以普通变量为虚参,编写函数子程序计算个人所得税子程序。 ⑸编写主程序完成以上工作,并将包含所得税信息的员工信息输出到另一个文本文件。

第二章 Fortran程序设计基础

第二章 Fortran程序设计基础 2.1.1字符集 “字符集”是指编写Fortran程序时,所能使用的所有字符及符号。Fortran所能使用 Fortran标准中规定,编译器只需要认得大写的英文字母,而如果程序代码中使用小写英文字母,则会把它们视为大写字母。简单说,Fortran是不区分大小写的语言。 特殊符号除了用来做数学计算符号外,还有其他用法,后面用到时会介绍它们。 2.1.2书面格式 Fortran程序代码的编写格式有两种,Free Format(自由格式)及 Fixed format(固定格式)。Fixed format(固定格式)属于旧式写法,它在编写版面上有很多限制。Free Format (自由格式)是Fortran90之后的新写法,取消了很多旧的限制。这里,我们要求用Free Format格式来编写程序。以*.F90为扩展名的文件,就是用Free Format来编写的程序。 Free Fortran格式基本上允许非常自由的格式,它没有规定每一行的第几个字符有什么作用。需要注意以下几点: (1)叹号“!”后面的文本都是注释,Fortran90编译程序对源程序进行编译时,对注释区内的内容不予处理。 (2)每行可以编写132个字符。 (3)行号放在每行程序的最前面。 (4)要求以一个“&”作为一个续行标志;一行中可以写多条语句,用“;”隔开。 下面是一个用Free Format格式的编写实例: 1.! Free Format 2. program main 3. write(*.*) “hellow” !这也是注释 4. write(*.*) & 5. “hellow” 6. end 这里,读者可发现第一、三行中都有注释,第一行整行都是注释,第三行只有叹号后面的部分是注释。第四行的最后是连接符号&,所以第五行会连接在它后面。 2.1.3 Fortran的数据类型 1.整数(INTEGER) 整数的类型又分为两种,长整型与短整型。在个人计算机中长整型占32 bit(4 bytes)的空间,常整型可保存的数值范围在-2147483648+2147483647之间,(也就是-231+1231之间),而短整型占16 bit(2 bytes)的空间,短整型可保存的数值范围在-32768+32767之间,(就是-215+1215之间)。 2.浮点数(REAL) 浮点数也有两种类型,单精度及双精度。单精度浮点数在个人计算机中占用32 bit(4 bytes)的空间,有效位数为6—7位。可记录的最大数值为±3.4*1038,最小数值为±1.18*10-38。双精度浮点数会占用64 bit(8 bytes)的空间,有效位数为15—16位。可记录的最大数值为±1.79*10308,最小数值为±2.23*10-308。 3.复数(COMPLEX)

计算机程序设计基础—FORTRAN

中南大学 本科生课程设计(实践)任务书、设计报告(计算机程序设计基础—FORTRAN) 题目线性病态方程组问题 学生姓名刘鑫 指导教师陈语林 学院土木工程学院 专业班级土建类1007班 学生学号1208100724 计算机基础教学实验中心 2011年7 月1日

一、任务内容 利用文件读写、数组、子程序、循环等内容解决线性病态方程组求解、求条件数问题,并绘制方程解的数据分布图。 二、系统开发设计思路 1、系统结构图 三、系统功能及系统详细设计 1、系统功能 通过调用子程序,能求出任意线性病态方程组的解以及系数矩阵的范数并绘出解的数据分布图 求解:全选主元高斯消去法,利用全选主元、归一化、消去、回代过程求出任意方程组的解。再结合矩阵求积子程序,利用循环提高解的精确度从而求出线性病态方程组的解。 求逆矩阵:利用高斯-约当法求逆矩阵。 绘图:利用QuickWin绘图,并设置背景颜色、绘图颜色、标注相应数据等。2、模块

求解 求逆矩阵高斯消去法 绘图:利用QinckWin 绘图 四、 遇到的问题与解决的方法 1、读写过程中无法将文件插入到主程序当中。 解决方法:在主程序当中进行文件操作,先产生文件后调用。 2、用高斯消去法求解得到的解误差很大 解决方法:设定一个EPS 作为精确度,再用三中的求解子程序求解。 3、在求解范数中输出的为7.48E+28 解决方法:请教老师后发现子程序中缺少定义导致相除是分母为0,后添加定义。 五、 总结 通过两周的计算机实践,我的计算机基础以及程序编写能力均有很大的提高,特别是对Fortran 这门语言有了更深的了解,使我在今后的学习生活中能更加熟练地使用这门实用的技术。 六、 参考文献 [1] 刘卫国,蔡旭辉.FORTRAN90程序设计教程.北京:京邮电大学出版社,2007 [2] 徐士良.FORTRAN 常用算法程序集.北京:清华大学出版社,1995

(完整)《FORTRAN 95程序设计》学习笔记

《FORTRAN 95程序设计》学习笔记 66RPG gg ★目录★ 《FORTRAN 95程序设计》学习笔记 (1) 基础知识(基础、字符串、FORMAT、隐式、TYPE) (1) 流程与控制(if、select、do) (4) 数组(声明、隐式循环、整体操作、可变数组) (5) 函数与子程序(子程序、函数、全局变量) (6) MODULE与面向对象(重载操作符、虚函数) (9) 文件相关(OPEN、WRITE、READ) (10) 指针(指向变量、数组、函数) (11) Visual Fortran 编译器(DLL,VB调用) (12) 数值算法与IMSL(数值算法插件) (14) 常用库函数(数学、数组、零碎、子程序) (15) 基础知识(基础、字符串、FORMAT、隐式、TYPE) ★【小玩意】二进制观察器:装在M.. Visual Studio\DF98\bin,有一个Bitviewer,可以观察变量储存方式 ★【语法】续行:行结尾或行开头使用& 符号;注释:使用! 符号 ★【语法】数学表达式:+ ;- ;* ;/ ;( ;) ;**乘幂 ★【语法】程序结束:STOP (Ruby的exit) ★【语法】输出:write(*,*),完整写法:write(unit=*,fmt=*) ?建议:少用print,尽量用write ★【语法】声明 ?整型:integer(kind=4) a ;其中kind是使用的bytes数,4 or 2 ◆其他写法:integer*4 a; integer(4) a ?浮点:real(kind=4) a ;有效数位6位(12345678存为1.234567E7),如果是 kind8则为15位有效数字 ◆此外:1E10:单精10^10,1D10:双精10^10 ?复数:complex :: a=(2,3)

程序设计基础

程序设计基础 1 .简述常用计算机语言及其程序的执行方式? 答: (1 )机器语言,是由若干个0 和 1 ,按照一定的规则组成的代码串。用机器语言编写的程序叫做目标程序。计算机可直接识别目标程序。 (2 )汇编语言,它不能直接使硬件工作,必须用一套相应的语言处理程序去翻译为机器语言后,才能使硬件接受并执行。这种语言处理程序叫做汇编程序。 (3 )高级语言,它必须翻译成机器语言程序后,才能在计算机上运行。根据翻译方式的不同,高级语言源程序的翻译过程可分为解释方式和编译方式。 2 .算法和程序有什么相同之处,有什么不同之处? 答:算法是对解决问题步骤的描述。程序是用计算机语言编制的能完成特定的功能代码。相同:对问题的描述。不同:一个不可执行,一个可执行。 3 .什么叫时间复杂度? 答:时间复杂度:依据算法编制成程序后,在计算机上运行时所消耗的时间。 4 .什么叫空间复杂度? 答:空间复杂度:依据算法编制为程序后,在计算机中所占存贮空间的大小。 5 .什么是结构化程序设计的基本思想? 答:结构化程序设计的基本思想是采用“自顶向下,逐步求精”的程序设计方法和“单入口单出口”的控制结构。 6 .“编译程序”和“解释程序”,有什么区别? 答:编译是指将用高级语言编写好的程序( 又称源程序、源代码) ,经编译程序翻译,形成可由计算机执行的机器指令程序( 称为目标程序) 的过程。解释是将高级语言编写好的程序逐条解释,翻译成机器指令并执行的过程。 7 .程序设计的基本过程是什么? 答:基本过程是:问题描述、算法设计、代码编制以及调试运行。 8 .为什么需要程序的注释? 答:注释就是一种很好的文档,并不要求计算机理解它们,但可被读程序的人理解。注释记录程序设计的说明,保证程序的可读性。

《程序设计语言(FORTRAN)》实验课程教学大纲

《程序设计语言(FORTRAN)》实验教学大纲 所属课程名称:程序设计语言(FORTRAN) 所属课程编号:20411807 课程总学时数:64(计划内)+16(计划外) 实验时数:32(计划内上机16、计划外上机16) 开设实验项目数:16 适用专业:给水排水工程、环境工程、土木工程、工程力学、无机非金属材料工程、应用化学等工科专业。 实验成绩占课程成绩比例:占平时成绩30%。 实验成绩评定方式: 根据专设的操作考核评定 根据专设的实验笔试评定 根据平时实验操作综合评定 其它评定方式:上机操作 √ 课程大纲对实验的要求、实验总目的: 实验要求:理解和掌握程序设计的基本原理、基本知识、基本概念和基本方法,掌握FORTRAN 90语言的词法、语法和语义规定,以及FORTRAN 90/95程序设计方法和技术,熟悉FORTRAN 90/95程序开发环境Developer Studio,能熟练设计和编写FORTRAN 90/95程序求解具体的实际问题。 实验目的:《程序设计语言(FORTRAN)》课是一门实践性很强的计算机技术基础课程,上机实验是本课程教学活动的重要组成部分和必要环节。通过上机实验,使学生进一步理解、消化、掌握FORTRAN 90/95程序设计的基本原理、基本知识、基本概念和基本方法,使学生深入了解和掌握计算机求解问题的一般过程,熟练掌握程序设计方法和技能,提高学生使用计算机分析问题和解决问题的能力,提高学生的计算机综合素质和创新能力。通过上机实验,使学生能熟练使用FORTRAN 90/95语言设计和编写计算机程序,为进一步使用计算机求解专业问题奠定坚实基础。 本课程实验项目

Fortran程序设计课后习题答案方便

第四章 main implicit none write(*,*) "Have a good time." write(*,*) "That's not bad." write(*,*) '"Mary" isn''t my name.' end program main real, parameter :: PI=3 implicit real radius write(*,*) " 请输入半径长" read(*,*) radius write(*,"(' 面积='f8. 3)") radius*radius*PI end program main implicit none real grades write(*,*) "请输入成绩" read(*,*) grades write(*,"(' 调整后成绩为 '") SQRT(grades)* end program a,b real ra,rb a=2 b=3 ra= rb= write(*,*) b/a ! 输出1, 因为使用整 数计算, 小数部分会无条件舍去 write(*,*) rb/ra ! 输出 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/ write(*,"'米 =''厘米 =''英寸')") d%meter, d%cm, d%inch end program 第五章 main implicit none integer money real tax write(*,*) "请输入 月收入" read(*,*) money if ( money<1000 ) then tax = else if ( money<5000) then tax = else tax = end if write(*,"(' 税 金为 'I8)") nint(money*tax) end program main implicit none integer day character(len=20) :: tv write(*,*)

相关文档
最新文档