FORTRAN经典入门程序20例_第1页
FORTRAN经典入门程序20例_第2页
FORTRAN经典入门程序20例_第3页
FORTRAN经典入门程序20例_第4页
FORTRAN经典入门程序20例_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、对于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 else pay=hours*rate END IF print *,"rate=", rate print *, "hours=&q

2、uot;, hours print *,"pay=",pay end2.学生成绩问题。大于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

3、,"GRADE=>B" END IF END IF END3.三个数按从小到大排序。PROGRAM MAXMIN REAL A,B,C,T READ *,A,B,C IF (A.GT.B) THEN T=A A=B B=T ELSE END IF IF (B.GT.C) THEN T=B B=C C=T ELSE END IF IF (A.GT.B) THEN T=A A=B B=T END IF PRINT *,A,B,C END4.运用EISE IF语句。重做例子2PROGRAM ex2 READ (*,*) GRADE IF (GRADE .GE. 80.0)

4、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 END5. 计算 PROGRAM EQUATION READ (*,*) X IF (X .GE. 0.0) Y=3*X+6 IF (X .LT. 0.0) Y=-X*2+2*X

5、-8 PRINT *,"X=",X, "Y=",Y END6.CONTINUE语句。为了使循环的起止范围清晰,使用终端语句例:求5!program ex1 FACT=1 do 10, N=1,5,1 #DO 语句标号,循环不变量=初值,终值,步长 FACT=FACT*N10 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+FACT10 continue print*,SUM e

6、nd7.求EX=1+X+X2/2!+X3/3!+.+XN/N! READ *,X,N sum=1 TERM=1 do 10, I=1,N,1 TERM=TERM*X/I SUM=SUM+TERM10 continue print*,"EXP(",X,")",SUM end8.打印九九乘法表 do 10,I=1,9,1 do 20,J=1,I PRINT*,I,"*",J,"=",I*J20 CONTINUE10 CONTINUE end9.百钱买百鸡公鸡5元每只。母鸡3元每只,小鸡1元三只。求100元买一百只鸡。

7、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 IF30 CONTINUE20 CONTINUE10 CONTINUE END10.DO循环用来处理循环次数确定的情况比较方便。在处理无法事先知道循环次数时,使用当型循环。(1)DO WHILE DO 标号,WHILE(逻辑表达式)循环体CONTINUE 标号例 统计若干同学的得分并计算平均值。INTEGER SCORE,COUNT READ*,SCORE

8、SUM=0 COUNT=0 DO 10, WHILE(SCORE .GT. 0.0) SUM=SUM+SCORE COUNT=COUNT+1 READ *,SCORE10 CONTINUE AVER=SUM/COUNT PRINT *,AVER END11.辗转相除法求最大公约数。如26和6的最大公约数。先用27除以6,余数是3,再用6除以3,余数为0,则3就是最大公约数。命令MOD()求余数。INTEGER M,N,R,T READ*,M,NIF (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

9、=R R=MOD(M,N)10 CONTINUE PRINT *,"zui da gong yue shu",N END12.判断一个数是否是素数。SQRT()开根号 READ *,N MAX=sqrt(real(N) I=2 DO 10, WHILE (I .LE. MAX .AND. MOD(N,I) .NE. 0) I=I+110 CONTINUE IF(I .GT. MAX)THEN PRINT*,N,"IS A PRIME NUMBER" ELSE PRINT *,N,"IS NOT A PRIME NUMVER" END

10、IF END13.求100和200之间能被3或7整除的自然数。 I=10010 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 END14. 直到型循环,UNTIL 语句实现直到型循环。 格式“ DO S1,UNTIL(条件) 循环体 标号S1 CONTINUE例14用直到型循环求5! FORTRAN不支持UNTIL语句。INTEGER I,

11、PRODUCT I=1 PRODUCT=1 DO 10, UNTIL(I .GT. 5) PRODUCT=PRODUCT*I I=I+110 CONTINUE PRINT *,"5!=",PRODUCT ENDFORTRAN不支持UNTIL语句。让我们改成DO WHILE格式。INTEGER I,PRODUCT I=1 PRODUCT=1 DO 10, WHILE(I .LT. 5) PRODUCT=PRODUCT*I I=I+110 CONTINUE PRINT *,"5!=",PRODUCT END15. INTEGER R,I,J,S,T,SUMD

12、O 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/1020 CONTINUE IF (SUM .EQ. I) PRINT *,I,"is a daffodil NUMBER"10 CONTINUE END15.求一元二次方程的根 。DOUBLE PRECISION A, B, CCOMPLEX X1,X2READ *,A,B,CIF(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

13、(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 END16. 打印此图像。CHARACTER*9 LINE DO 10, I=-4,4,1 K=1 DO 40 J=1,ABS(I),1 LINE(K:K)=" " K=K+140 CONTINUE DO 20, J=1, 2*(4-ABS(I)+1,1 LINE(K:K)="*" K=K+

14、120 CONTINUE PRINT*,LINE DO 30, J=1,9,1 LINE(J:J)=" "30 CONTINUE10 CONTINUE END 17.输出数组中的数值。 INTEGER A(1:10)DO 10,I=1,10,1 READ *,A(I)10 CONTINUE PRINT *,A END18. 利用DO循环对数组进行输入和输出。从键盘上输入十个数,按顺序逐个放入到A(1)到A(10)中。 INTEGER A(1:10) DO 10,I=1,10,1 READ *,A(I)10 CONTINUE DO 20,I=1,9,2 PRINT *,&qu

15、ot;A(",I,")",A(I)20 CONTINUE END19. 双重循环将从终端读入的数据赋值给W数组中的各元素。REAL W(1:3,1:2) #表示一个三行两列的数组,当前面数一样时,可以写出 W(3,2) DO 10,I=1,3,1 DO 20, J=1,2,1 READ *,W(I,J)20 CONTINUE10 CONTINUE PRINT*,W END20。输入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)+110 CONTINUE DO 20,I=0,10,1 PRINT *,COUNTER(I),"=>",I*10,(I+1)*10-120 CONTINUE END21.顺序查找。一组数据从第一个开始找,折半查找,顺序查找适用数据少的情况,折半查找用于数据多的情况

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论