第六章

课本code

do循环

implicit noneinteger counterinteger,parameter::lines=10 !parameter常量符号,不可更改值!counter<=lines之前会一直重复循环!每执行一次循环counter+1do counter=1,lines,1 !!!!逗号,起始,重点,间隔write(*,*) "Happy Birthday",counterend doimplicit noneinteger::i,sumsum=0do i=2,10,2sum=i+sumend dowrite(*,"('2+4+6+8+10=',I8)")sumpause
!!或者:
implicit noneinteger,parameter::limit=10 integer counterinteger::ans=0do counter=2,limit,2ans=ans+counterend dowrite(*,*)anspause

用来设置计数器初值、上限及增值的数值可以使用变量来指定,这些变量值只会在进入循环之前就被读取,在循环中改变变量不会影响原来的循环次数。但是作为计数器的变量在循环中不能再使用命令去改变它的值,否则编译时会出现错误。

do while循环

implicit noneinteger,parameter::limit=10integer counterinteger::ans=0counter=2do while(counter<=limit)ans=ans+countercounter=counter+2 !计数累加end dowrite(*,*)ans!!猜数字implicit nonereal,parameter::weight=45.0 !答案real,parameter::e=0.001 !误差real::guess=0.0 !猜测值do while(abs(guess-weight)>=e)write(*,*)"Weight:"read(*,*)guessend dowrite(*,*)"You'are right."

cycle

cycle在循环中出现时,会跳回循环的开头进行下一次循环。

!共9层,电梯只是不在4楼停implicit noneinteger::dest=9integer floordo floor=1,dest,1 !也可以写floor=1,dest  因为默认1if(floor==4) cyclewrite(*,*)floorend dopause!!1 2 3 5 6 7 8 9

exit

exit出现时直接跳出一个正在运行的循环。

implicit nonereal,parameter::weight=45.0real,parameter::e=0.0001real guessdo while(.true.)write(*,*)"weight:"read(*,*)guessif(abs(weight-guess)<e) exitend dowrite(*,*)"You're right!"pause

署名的循环

给循环取名字,方便编写循环时明确的知道end do描述的位置是否正确。署名的循环也可以配合cycl、exit使用。

implicit noneinteger::i,joutter:do i=1,3  !外层循环取名为outter,一个冒号:inner:do j=1,2  !内层循环取名为innerwrite(*,"('(',I2,',',I2,')')")i,jend do inner   !结束inner这个循环end do outter    !结束outter这个循环pause!!结合cycle、exit使用
implicit noneinteger::i,jloop1:do i=1,3loop2:do j=1,3if(i==3) exit loop1 !跳离loop1循环if(j==2) cycle loop2 !重启loop2循环write(*,"('(',I2,',',I2,')')")i,jend do loop2end do loop1pause!!(1,1) (1,3) (2,1) (2,3)
!1+2+3+...+99+100=
!5050
implicit noneinteger::i=1integer::sum=0do while(i<=100)sum=sum+ii=i+1end dowrite(*,*)sumpauseimplicit noneinteger::countinteger::ans=0do count=1,100ans=ans+countend dowrite(*,*)anspause!!费式数列
!f0=0,f1=1
!f(n)=f(n-1)+f(n-2)implicit noneinteger::f0=0integer::f1=1integer::ans=0integer countwrite(*,*)f0,f1do count=1,8ans=f0+f1f0=f1f1=answrite(*,*)f1end dopause!! 0 1 1 2 3 5 8 13 21 34

len_trim作用:计算字符串的实际字符数。

!!加密、解密程序implicit noneinteger iinteger strleninteger,parameter::key=2character(len=20)::stringinteger::projectinteger::flag=0do while(flag==0)write(*,*)"请问您需要加密or解密?,加密输入1,解密输入2"read(*,*)projectif(project/=1 .and. project/=2) then write(*,*)"请输入正确的数字!"cycleelse if(flag==1) thenexitelse if(project==1) then!加密write(*,*)"请输入待加密的字符串:"read(*,*)string! len_trim函数的作用是,舍去字符串尾部的空格,并返回剩余部分strlen=len_trim(string) !取得字符串实际长度do i=1,strlenstring(i:i)=char(ichar(string(i:i))+key)end dowrite(*,"('加密结果:',A20)")stringflag=1else!解密write(*,*)"请输入待解密的字符串:"read(*,*)string! len_trim函数的作用是,舍去字符串尾部的空格,并返回剩余部分strlen=len_trim(string) !取得字符串实际长度do i=1,strlenstring(i:i)=char(ichar(string(i:i))-key)end dowrite(*,"('解密结果:',A20)")stringflag=1end ifend dopause

运行结果:

简易计算器,可多次运算
implicit noneinteger::flag=1real a,breal::ans=0character operationdo while(flag==1)write(*,*)"请输入待计算的数字1:"read(*,*)awrite(*,*)"请输入运算符号(若为除号请输入'/':"read(*,*)operationwrite(*,*)"请输入待计算的数字2:"read(*,*)bselect case(operation)case('+')ans=a+bcase('-')ans=a-bcase('*')ans=a*bcase('/')if(b==0) then write(*,*)"除数不能是0"cycleelseans=a/bend ifcase defaultwrite(*,"('未知运算符',A1)")operationcycleend selectwrite(*,"(f8.4,A1,f8.4,'=',f8.4)")a,operation,b,answrite(*,*)"是否需要进行下一次计算?是输入1,否输入0"read(*,*)flagend dowrite(*,*)"结束!"pause

运行结果:

习题

implicit noneinteger,parameter::count=5integer i,j,temp,kinteger::ans=0real::sum=0.0real::guessinteger::num=5integer,parameter::length=79character(len=length)::input,output!1do i=1,countwrite(*,*)"Frotran"end do!2do i=1,99,2ans=ans+iend dowrite(*,"('1+3+5+7+9+...+99=',I8)")ans!3do i=1,countnum=num-1write(*,*)"请猜一猜这位小姐的体重(kg):"read(*,*)guessif(abs(guess-45.0)<0.0001) then write(*,*)"恭喜您,猜对了!"exitelsewrite(*,"('猜测错误,您还有',I2,'次机会')")numcycleend ifend doif(num==0) thenwrite(*,*)"很遗憾,5次机会已经用完,您未能猜出这位小姐的体重。"end if!4outter:do i=1,10temp=1inner:do j=1,itemp=temp*jend do innersum=sum+1.0/tempend do outterwrite(*,"('1/1!+1/2!+1/3!+1/4!+...+1/10!=',f18.10)")sum!5write(*,*)"请输入一个字符串:"read(*,"(A79)")inputk=1do i=1,len_trim(input)if(input(i:i)/=' ') thenoutput(k:k)=input(i:i)k=k+1end ifend dowrite(*,"(A79)")outputpause

运行结果:

Fortran学习:chapter6相关推荐

  1. Fortran学习杂记(一)

    Fortran学习杂记(一) 1. 内置函数 1) 数值运算 常见:- abs( ) - aimag( ) -conj( ) -max( ) ** -min( ) - mod(a, b) - real ...

  2. Fortran学习3:控制流2:循环

    一个程序中循环是非常重要的,他会控制变量进行多次相同运算,在数组操作中有着不可替代的地位,今天就走进Fortran的循环,感受一下循环的乐趣. 哦,对了,Fortran程序在stop之前,可以加一个p ...

  3. Fortran学习12:IO 1

    之前写程序的时候,我们经常会使用read和write命令,这俩是最简单的io流命令,但是他们是有问题的,因为他们在读取之后,数据不能长期保存,这是个很恶心的问题,所以这个时候就需要文件来帮忙了. Fo ...

  4. Fortran学习5:数组2

    昨天学习了一些简单的数组操作,包括数组声明.赋值,今天来学习一些对数组的整体操作: 1.统一赋值: program Max integer::a(5) //!通过这一句,就可以把a数组的所有值全部赋值 ...

  5. FORTRAN学习记录(持续更新)

    FORTRAN: .f的后缀,表示固定格式: .f90的后缀,表示自由格式. 固定格式用'C'开头(必须在行首)表示注释+C后面用tab缩进,否则编译错误. 自由格式用'!'开头表示注释,!后面不用缩 ...

  6. Fortran 学习1--数据类型

    Fortran作为第一门高级语言,至今在科学计算上依然有着不可替代的作用.近期尝试C#下用Math.net做矩阵运算,尽管重载了运算符以及有了相应数学库的支持,但和Fortran相比任然觉得欠缺矩阵运 ...

  7. Fortran学习记录1(Fortran数据类型)

    Fortran中的字符 Fortran中的常量 Fortran中的变量 Fortran的I-N规则 Fortran中的有效位数 Fortran中的申明 Fortran中的表达式 Fortran中的语句 ...

  8. Fortran 90:Fortran 学习笔记(一)

    1.每句不超过132个字符,大小写不加区分,一行多语句用 ":" 区分: 2.使用!注释,在行末加上 "&" 续行,下一行行首也需加 "&am ...

  9. FORTRAN学习笔记

    目录 Fortran语言程序设计初步 Fortran77&Fortran90 简单的程序语句 数学运算 Fortran语言程序设计初步 Fortran77&Fortran90 1.Fo ...

最新文章

  1. MPB:扬大林淼组-​瘤胃混合细菌连续传代培养技术
  2. 如何快速部署国人开源的 Java 博客系统 Tale
  3. Tomcat关闭日志catalina.out
  4. 人参中第一次膜你退货
  5. Linux下的tar归档及解压缩功能详解
  6. Unity之CharacterController2D学习笔记(1)——基础使用
  7. Linq lambda表达式经验总结
  8. 如何轻松了解 Python 必学的 django 框架?
  9. ./config/config_global.php,直接git config和带--global、--system的区别
  10. 爬虫应对银行安全控件-实践
  11. android 存储盘 dcim,Android上的DCIM目录路径 – 返回值
  12. hdu 1862 hdoj 1862
  13. linux篇—Nginx反向代理负载均衡
  14. 阿里云系统盘扩容及数据盘分区、格式化分区、挂载、取消挂载
  15. LWN:替换 congestion_wait()!
  16. 证券业数据大集中及其风险控制分析
  17. HTML5七夕情人节表白网页制作 (蓝色主题-樱花雨3D相册)HTML+CSS+JavaScript
  18. 干货丨语雀Baklib在产品帮助手册制作过程中的实际亲测
  19. 【Lintcode】1375. Substring With At Least K Distinct Characters
  20. 127.0.0.1 拒绝了我们的连接请求--访问本地IP时显示拒绝访问

热门文章

  1. 视频教程-多人网络聊天室-Unity3D
  2. 至强服务器系统配置截图,至强服务器操作系统
  3. 罗马数字转整数-----c语言实现
  4. 请求报错No route to host (Host unreachable)
  5. 源于魔兽!《植物大战僵尸》成功奥秘 (转)
  6. 实现页面静态化(模型数据+模板=静态化)
  7. 重装系统后固态硬盘不见了如何解决
  8. python画建筑_我把图画这么好看,只是不想被建筑抛弃
  9. 遥感技术手段提取城乡建筑用地
  10. 专家建议尽快放开一线城市的限购,由于政策的限制,很多人无法购买适合自己的住房...