fortran安装 中如何输一个一行四列的已知元素

当前位置: >>
FORTRAN语言
§1.1 FORTRAN语言简介Formula Translator(公式翻译器,数学语言翻译为机器语言)一、FORTRAN语言的三点说明 1. 常数与变量的说明 2. 语句书写格式 3. 与C语言的不同 1. 常数与变量的说明FORTRAN中常数与变量分为7类?整数型(integer)长整型32bit,短整型16bit;?? ? ? ? ?实型(real)32bit;双精度实型(double precision)real*8; 8bytes 64bits 复型(complex)a+bi 两个浮点数;也分单双精度 双精度复型(D-P-C)complex*16; 逻辑型(logical) True, False 分别以1,0代表; 文字型(character) (字符型) 关于变量的说明:? ?定义注意I-N法则 名称长度不超过6个字符长(字母开头)大小写等价 ? implicit语句: implicit real*8 (a, c), (t-v) implicit integer (d, e)? ?在FORTRAN 77中有字符型变量,字符型常数只能存储在字符型变量中。 2. 语句书写的格式?第1列有字符C时(注释行),不参加编译和运行。 FORTRAN90普遍用!放在语句后,但该句参与 本行在它后面的所有均被定义为注释。 运行。 当第6列上有非零和非空格的字符时,表明此行 为上行的继续行。例如:&??语句在7~72列中;语句标号1~5列。FORTRAN77扩展名为: *.f或*.for FORTRAN90无严格限制(以.f90为后缀) 3. 与C语言的不同? ? ? ? ?不分大小写。 每句末尾不必要写分号。程序代码命令间的空格没有意义。与C不同,FORTRAN不使用{ }。数据类型多出了复数、乘幂运算和逻辑判断类型。 a=cmplx(1.0, 2.0) a=(1.0, 2.0) ! 1+2i b=3.0**(1./5.)31/ 5 ! 二、FORTRAN基本语句1、可执行语句(1) 赋值语句 V(变量)=e(表达式) (2) 流程控制语句 (3) 输入、输出语句 read(u,*), write(u,*) (2)流程控制语句? ?①无条件 goto语句 goto k ②算术条件语句 if(e) k1, k2, k3 (数轴记忆法) (e&0) (e=0) (e&0) ③逻辑条件语句 if(e) s算术表达式? ?逻辑表达式 ④循环do语句 do n i=m1,m2,m3 do n i=m1,m2? ?⑤继续语句 continue ⑥call s(d1,d2,…,dn) return (在end前) ②算数条件语句: if(e) k1, k2, k3 (e&0) (e=0) (e&0)?? ? 2 ? 例1:编程给出 Y ? ?0 ?? 2 ? ( x ? 0) ( x ? 0) 的值。 ( x ? 0)要求:x 为键盘输入。 算数条件语句的计算编程cha1-1.f: read(*,40) X format(F8.2) if(x)10,20,30 ?? ? 2 ( x ? 0) Y=-1.57079 ? Y ? ?0 ( x ? 0) goto 100 ?? 2 ( x ? 0) ? Y=0 goto 100 Y=1.57079 goto 100 write(*,50)x,Y format(1X,2HX=,F10.6,4H, Y=F10.6) end4010 20 30 100 50 ③逻辑条件语句?0.5 X ? 0.95 例2: Y ? ? ?0.7 X ? 0.53 x ? 2.1 x ? 2.1if(X.le.2.1)Y=0.5*X+0.95 Y=0.7*X+0.53 write(*,*)X,Y关系运算符号:错误表示!FORTRAN 77: .gt.FORTRAN 90 : &.ge.&=.lt.&.le.&=.eq.==.ne./=逻辑运算符号:.and. .or. .not.(逻辑非) .euv.(逻辑等) .neqv.(逻辑不等) ?0.5 X ? 0.95 Y ?? ?0.7 X ? 0.53x ? 2.1 x ? 2.1正确表示: if(X.le.2.1) Y=0.5*X+0.95 if(X.gt.2.1) Y=0.7*X+0.53 write(*,*)X,Y 或者 if(X.le.2.1) then Y=0.5*X+0.95 else Y=0.7*X+0.53 end if write(*,*)X,Y 例3:有三个数x,y,z,要求打印出其中最大的数。 cha1-3.f: read(*,20)x,y,z 20 format(3F10.4) big=x if(y.gt.big)big=y if(z.gt.big)big=z write(*,*)’big=’,big end ④ 循环do语句循环变量的初值 循环的终止值 循环增量值(省略则默认为1)do n i=m1,m2,m3 或 do n i=m1,m2即: do 标号 循环变量=表达式1,表达式2 [,表达式3]例如: do 10 i=1,100,2 do 100 j=1, 8 do 60 x=1.2, 3.6, 0.2使用do语句循环时,可省略标号 do i=m1,m2,m3 do i=1,100 例: 循环程序 i=i+1 end do end do ④循环do语句例4:编程求解0.0, 0.1, 0.2, 0.3的平方根 ? do 10 i=0, 0.3, 0.1 (错误) 或者用以下程序: x=0.0 do 10 x=0.0,0.3,0.1 do 10 i=1,4 y=sqrt(x) y=sqrt(x) 10 write(*,20)i,x,y write(*,20)i,x,y 20 format(1X, I5, 2F10.4) 10 x=x+0.1 end 20 format(1X,I5,2F10.4) end ? ?⑤继续语句 continue ⑥call s(d1,d2,…,dn)return (在end前) (3) 输入、输出语句read(u1,n1), write(u2,n2)u1: 输入设备通道号:(1~7)u2: 输出设备通道号:(1~7) 若u1,u2为“*”,则分别表示按键盘格式输入、屏幕表 列 输出。 n表示格式说明:若n=n1,则表示输入、输出按n1语句标号规定格式执行。若n为“*”,则表示按自由格式输入或输出。 2. 非执行语句(1)说明语句: ①类型说明语句 、 隐含说明语句Implicit例如 implicit integer(A,B,C) A,B,C开头的变量都是为整型 implicit none 关闭默认类型功能,所有变量都要事先声名②维数语句: dimension r(i)或r(i, j, k) real*8 a(i), complex*16 r(i) ③公用语句: common w1, w2 主程序与子程序w1,w2同变量 ④参数语句: parameter v1=c, v2=c (2)format语句 (3)data语句(数据初值语句) ? data v1/d1/,v2/d2/,…vn/dn/ ? 或 data v1,v2,…,vn/d1,d2,…,dn/(4)定义函数语句:f(a1,a2,…an)=e (5)子程序语句: ① 函数子程序 function f(a1,a2,…an) ② 子例程子程序 subroutine s(a1,a2,…an) 函数子程序 function举例:n! 例5:编程求 P ? 的值。 ( n ? r )!integer fac,p,r write(*,*)'n=,r=?' read(*,*)n,r p=fac(n)/fac(n-r) write(*,*)n,r,p end integer function fac(n) fac=1 if(n.le.1) goto 77 do 10 k=2,n fac=fac*k return end10 77 子例程子程序 subroutine举例:n! 例5:编程求 P ? 的值。 ( n ? r )!integer p,r write(*,*)'n=,r=?' read(*,*)n,r call fac(n,m) m1=m call fac(n-r,m) m2=m p=m1/m2 write(*,*)n,r,p end10 77subroutine fac(i,m) m=1 if(i.le.1) goto 77 do 10 k=2,i m=m*k return end 关于: ! N 若不采用循环,还可以采用以下计算程序:open(1,file=’N!.dat’) write(*,*)’input N=?’ read(*,*)N M=1 I=2 M=M*I I=I+1 if(I.gt.N) goto 10 goto 5 write(1,*) M end510 三、源程序语句排列顺序?(1)说明语句(类型语句、维数语句等) ?(2)数据语句(数据初值语句,定义函数语句) ?(3)可执行语句 ?(4)结束语句(格式语句可放在任意处) ?(5)子程序语句(函数子程序,子例程子程序) Format 格式Aw BN BZ Dw.d EW.d[Ee] 以w个字符宽度输出字符串 定义文本框中的空位为没有东西,在输入时才需要使用 定义文本框中的空位代表0,在输入时才需要使用 以w个字符宽来输出指数类型的浮点数,小数部分占d个字符宽 以w个字符宽来输出指数类型的浮点数,小数部分占d个字符宽, 指数部分占e个字符ENW.d[Ee] 以指数类型来输出浮点数 ESW.d[Ee] 以指数类型来输出浮点数 Fw.d Gw.d[Ee] Iw.[.m] Lw nX 以w个字符宽来输出浮点数,小数部分占d个字符宽 以w个字符宽来输出任何种类的数据 以w个字符宽来输出整数,最少输出m个数字 以w个字符宽来输出T或F的真假值 把输出的位置向右跳过n个位置 /: kP代表换行在没有更多数据时结束输出 K值控制输入输出的ScaleTnTLn TRn SP SS输出的位置移动到本行第n列输出的位置向左相对移动n列 输出的位置向右相对移动n列 在数值为正时加上“正号” 取消SPBw[.m]把整数转换成二进制来输出,输出会占w个字符宽,固定输出 m个数字, M值可以不给定把整数转换成八进制来输出,输出会占w个字符宽,固定输出 m个数字, M值可以不给定 把整数转换成十六进制来输出,输出会占w个字符宽,固定输 出m个数字,M值可以不给定Ow[.m]Zw[.m] 四、FORTRAN常用内部函数(库函数)功能 通用名 含义 功能正弦 余弦 a+ib x1/2 |x| 正切 反正弦 反余弦通用名sin(x), dsin(x), csin(x) cos(x), dcos(x), ccos(x) tan(x), dtan(x), ctan(x) asin(x), dasin(x) acos(x), dcos(x)含义sin(x) cos(x) tg(x) sin-1(x) cos-1(x)转 换 到 整 int(x) 型 转换到实 型 转换到复 型 平方根 取绝对值 float(x) cmplx(a,b) sqrt(x), dsqrt(x), cqrt(x) abs(x), dabs(x), cabs(x)指数自然对数 常用对数 最大值exp(x), dexp(x), cexp(x)alog(x), dlog(x) ,clog(x) alog10(x), dlog(x) max(a1,a2,a3)exlnx log10x反正切求共轭 求余 最小值atan(x), dtan(x)conjg(x) mod(a1,a2) min(a1,a2,a3)tg-1(x)a1/a2余数 关系运算符号: +,-,*,/,** 表达式写法正误比对举例:? ? ? ? ??错误 a(-b) a*-b (ab)3 a*b**3 sin6t sin6t aex a*e**x 6.8log26.5 6.8*log26.5a/b c/da/b/c/d正确 a*(-b) (a*b)**3 sin(6*t) a*exp(x) 6.8*alog10(26.5)(a/b)/(c/d) 说明1. “/”及“*”不能省略;一律用小括号。2.同类型算术量间才能运算。3.括号 函数 ** *,/ +,― 五、有关循环语句? (1)循环变量最好不要第二次赋值。 ? (2)可以从循环体内转向循环体外, 不允许循环体外转向循环体内。 ? (3)注意多重循环问题。 例6:编程给出 x ? sin ?t 的数据文件。implicit real*8(A-H,O-Z) open(1,file=’sin.dat’) write(*,*)’input w,N’ read(*,*)w,N pi=3.1415926 do 10 I=1,N t=2.*pi/w t=t*float(I)/N x=sin(w*t) write(*,*)t, x write(1,*)t, x end10 1 例7:编程计算:? 2 ? 22 ? ? ? 263? (指数增加每次加1,可以用i代替) a=1 a=1 do 10 i=1, 63 do i=1, 63 10 a=a+2**i a=a+2**i write(*,*) a enddo end write(*,*) a end x2 x3 x4 x N ?1 例8:编程计算 y ? 1! ? 2! ? 3! ? ? ? N ! 的值。write(*,*)’input x, N’ read(*,*)x,N y=0 do 20 M=1,N t=1 s=x do 100 J=1,M t=t*float(J) s=s*x y=y+s/t write(*,*) M,y end y=0 do M=1,N t=1 s=x do J=1,M t=t*float(J) s=s*x enddo y=y+s/t write(*,*) M,y enddo end100 20 六、FORTRAN语言的优缺点优点: ? 历史长,正确可靠,兼容性强。? ? ? ? ?语法书写要求严格,更适合严谨的科学计算领域。可以直接对数组和复数进行运算。 在并行方面,Fortran语言仍是不可替代的。 Fortran语言是一种编译语言,运行速度快。Fortran语言自身仍在不断完善和发展,功能不断增强。 缺点: FORTRAN语言是编译语言,具有执行速度快等特点。 也正是这些优点带来了一些缺点。如格式严格必然导致灵活性下降,操作指针困难等等。?本课程后续章节中,有关例题均采用Fortran编译, 如若用其他算法语言编程,Fortran源码仅供参考。 作业EX1-1: 编程计算 T ? 13 ? 23 ? 33 ? ? ? N 3,直至 T大于 10 4为止。 EX1-2: 编程求 Y 值,x由键盘输入?x ? Y ? ?x 2 ? 1 ?x3 ? x 2 ? 1 ? (0 ? x ? 10 ) (10 ? x ? 20 ) (20 ? x ? 30 )EX1-3:编程计算 1 ?1 1 1 1 ? ? ??? 1? 2 2 ? 3 3 ? 4 N ( N ? 1)?3的和,直至最后一项小于10 。
fortran语言教程第8章 - 第8章 FORTRAN 语言的文件操作 在前面介绍的程序中,结果都是输出在屏幕上,数据都是通过键盘送入内存单元,实际上数 据的输入/输出也可...6 第七讲_FORTRAN 的基本知识.ppt FORTRAN 语言程序设计初步 FORTRAN 是 Formula Translation 的缩写,意为“公式翻译” ,它是为科学、工程问题或企事业管理中的...9 FORTRAN77 函数与子程序 9.1 FORTRAN77 语句函数 当函数十分简单,用一条语句足以定义时(允许使用继续行)才用; 应该放在所有可执行语句之前和有关类型说明语句...C语言和Fortran语言的比较 - C 语言和 Fortran 语言的差异 本文详细介绍 C 语言和 Fortran 语言的差异 1. C++语言和 Fortran 语言的发展背景 在程序设计...fortran语言内部函数库_工学_高等教育_教育专区。附录 FORTRAN 90标准函数符号约定: ? I 代表整型;R 代表实型;C 代表复型;CH 代表字符型;S 代表字符串;L ...Fortran之COMMON语句_工学_高等教育_教育专区。Fortran之COMMON语句 用法详细介绍 Fortran 之 COMMON 语句 FORTRAN 程序中各程序单位之间的数据交换可以通过虚实结合来...由于 Fortran 语言在记忆体上配置阵列元素时是采用 leading dimension 顺序,也就是第一维 index 变动得最快而最后一维变动得最慢的顺序,以切 割最后一维的效率最...Fortran 语言使用 f90SQL 连接各数据库方法 1、 首先配置开发环境,我使用的 vs2013.2_ult_chs 加 Intel.Visual.Fortran.Composer.XE.2013-SP1。 2、 配置 f90...Fortran语言_IT认证_资格考试/认证_教育专区。Fortran 语言 (Fortran77 结构化程序设计) 谭浩强 田淑清 编著 普通高校计算机基础教学系列课程 说明 ? ? 第一章 算法...FORTRAN 语言显蓝色的词 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. ...
All rights reserved Powered by
www.tceic.com
copyright &copyright 。文档资料库内容来自网络,如有侵犯请联系客服。24小时热门版块排行榜&&&&
(小有名气)
在线: 138.2小时
虫号: 1114260
注册: 性别: GG专业: 半导体晶体与薄膜材料
fortran两个问题,文件中的空格,屏幕同一行覆盖输出
问题一,在文件总如下的数据,怎么读?可以用read(10,*)实现,但我前面还有字符串,所以怎么用格式控制符读取?
...2281860
...0239597
...2175420
...0741127
...1658080
...1343700
问题二,如何实现屏幕同一行覆盖输出?
然后输出200 31%,覆盖前面的内容,在同一行
& 猜你喜欢
已经有6人回复
已经有19人回复
已经有38人回复
已经有4人回复
已经有73人回复
已经有8人回复
已经有22人回复
已经有15人回复
已经有13人回复
已经有46人回复
& 本主题相关价值贴推荐,对您同样有帮助:
已经有9人回复
已经有3人回复
已经有14人回复
已经有4人回复
已经有59人回复
已经有104人回复
已经有6人回复
已经有4人回复
已经有9人回复
(职业作家)
在线: 1312.8小时
虫号: 183750
注册: 专业: 污染生态化学
【答案】应助回帖
★ ★ 微尘、梦想(金币+2): 谢谢参与应助!
21:42:02shixha(金币+2):
第一个问题你没有说清楚,所以不知道你要干什么,至少应该给出数据,及你想要的结果……
第二个问题,可以试一下下面的代码:CODE:program test
& &character(len=20) :: a, b
& &character*1 creturn ! code::
& &a = '100 30%'
& &b = '200 31%'
& &creturn = achar(13) ! generate carriage return
& &write( * , '(a,a)' , advance='no' ) creturn , a
& &write( * , '(a,a)' , advance='no' ) creturn , b
end program test
& 本帖已获得的红花(最新10朵)
(职业作家)
在线: 1312.8小时
虫号: 183750
注册: 专业: 污染生态化学
引用回帖:Originally posted by shixha at
试了下,成功了,为什么用ascii的回车,这样就可以使指针回到屏幕行头嘛?不是很理解。
第一个问题是这样的,我想从文件中导入数据,到数组中。文件的结构如下,5列,前面两个是integer的,后面三个是rea ... 都要,还是只要后面三列……
(职业作家)
在线: 1312.8小时
虫号: 183750
注册: 专业: 污染生态化学
【答案】应助回帖
引用回帖:Originally posted by shixha at
试了下,成功了,为什么用ascii的回车,这样就可以使指针回到屏幕行头嘛?不是很理解。
第一个问题是这样的,我想从文件中导入数据,到数组中。文件的结构如下,5列,前面两个是integer的,后面三个是rea ... 既然小数点位数可能不一样,如何格式化读取呢?如果你的数据不是按特定格式的话,就不可能格式化读取。
通常采用的办法就是用字符串和内部文件结合在一起处理,这样可能比较快一些……
其实 read(10,*) 挺好啊,把所有的数先用 real 读入,然后你再折腾就好了……
(职业作家)
在线: 1312.8小时
虫号: 183750
注册: 专业: 污染生态化学
引用回帖:Originally posted by shixha at
我是用格式化和read(10,*)交替读取的,感觉太冗长了,因为周期性出现字符串的,非常感谢!!! 你上面给出的数据中没有字符串啊……
(职业作家)
在线: 1312.8小时
虫号: 183750
注册: 专业: 污染生态化学
引用回帖:Originally posted by shixha at
试了下,成功了,为什么用ascii的回车,这样就可以使指针回到屏幕行头嘛?不是很理解。
第一个问题是这样的,我想从文件中导入数据,到数组中。文件的结构如下,5列,前面两个是integer的,后面三个是rea ... ascii 的回车,表示 Go to the beginning of the current line,所以,利用这一特性,可以模拟你的要求,呵呵……
(职业作家)
在线: 1312.8小时
虫号: 183750
注册: 专业: 污染生态化学
引用回帖:Originally posted by holmescn at
我想是不是可以这样CODE:read(10, '(A, X, A)') str, data
read(data,*) your, datas这个要求 str 的长度要固定,否则会出问题……
(职业作家)
在线: 1312.8小时
虫号: 183750
注册: 专业: 污染生态化学
【答案】应助回帖
引用回帖:Originally posted by shixha at
ITEM: TIMESTEP
ITEM: NUMBER OF ATOMS
ITEM: BOX BOUNDS
ITEM: ATOMS id type xs ys zs
...0298728
2888 ... 用 index 函数跳到你所需要的行的附近,然后再用 read 函数读你所需的数据,再进行进一步的处理。
这个过程,可以用 do...end do 这样的循环……
最好能给出一个完整的数据文件(那怕是精简过),加上你期望结果的描述,这样可以写成程序,大家都好理解……
(职业作家)
在线: 1312.8小时
虫号: 183750
注册: 专业: 污染生态化学
【答案】应助回帖
引用回帖:Originally posted by shixha at
ITEM: TIMESTEP
ITEM: NUMBER OF ATOMS
ITEM: BOX BOUNDS
ITEM: ATOMS id type xs ys zs
...0298728
2888 ... 如果行数一直是固定的,那么直接用 do i=1,...end do 来做也是可以的……
(职业作家)
在线: 1312.8小时
虫号: 183750
注册: 专业: 污染生态化学
引用回帖:: Originally posted by sunyang1988 at
你好,我用了类似上面的这段代码,在一个循环中想输出如下的完成度,
每一次都覆盖前面的,防止出现刷屏的情况。但用了这段代码,发现这一行始终是空的,直到程序终止(正常 ... 你先把你的问题代码给出来看看吧……
& 本帖已获得的红花(最新10朵)
(职业作家)
在线: 1312.8小时
虫号: 183750
注册: 专业: 污染生态化学
引用回帖:: Originally posted by sunyang1988 at
按照你说过的代码,做如下循环
program test
integer(8)::a,b
character(1)::creturn=achar(13)
write(*,'(A,I)',advance='no') creturn,a
end program test
我希望得到的结果是在屏幕 ... 其实程序没有什么问题,只是你的a给得太小了,而你的计算机可能太快了,把 a 换成 10000 再看一下
另外,(A,I) 这一句是有错误的,I后面必须要有一个整数,如 I5……
至于 char 和 achar 这样的内置函数,请查 Fortran 的文档,如 gfortran 的手册……
相关版块跳转
第一性原理
我要订阅楼主
的主题更新
小木虫,学术科研互动社区,为中国学术科研免费提供动力
违规贴举报删除请发送邮件至:
广告投放与宣传请联系 李想 QQ:
QQ:&&邮箱:
Copyright &
MuChong.com, All Rights Reserved. 小木虫 版权所有fortran连续输出超过80个字符就自动换行了,在txt文本中后半段字母在第二行了,怎样沿一行一直往后输出_百度知道
fortran连续输出超过80个字符就自动换行了,在txt文本中后半段字母在第二行了,怎样沿一行一直往后输出
答题抽奖
首次认真答题后
即可获得3次抽奖机会,100%中奖。
可能性1:文件并没有换行。只是你使用的编辑器换行了。比如记事本。建议用 UltraEdit 来判断是否真的换行了。可能性2:真的换行了。这是因为你没有使用格式化输出。相关内容,请翻阅教科书的 format 相关的章节
采纳率:76%
来自团队:
为您推荐:
其他类似问题
自动换行的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。fortran中一行中的多条语句必须加以逗号隔开吗_百度知道
fortran中一行中的多条语句必须加以逗号隔开吗
答题抽奖
首次认真答题后
即可获得3次抽奖机会,100%中奖。
fortran中的整行续行符号是分号;,例如:program mainwrite(*,*) 'Hello ! World !' ; endFixed Format的行内连接符号则是0以外的任意可见字符,出现在第二行的第六个字符位置,且前五个位置为空,例如:
program main
write(*,*)
1'Hello ! World !'
endFree Format的行内连接符号是&,出现在行末,例如:program mainwrite(*,*) &'Hello ! World !'endFree Format的行内连接符还有一种情况是这样的:program mainwrit&&e(*,*) 'Hello ! World !'end这种写法是不提倡的。(详见彭国伦的书)
采纳率:67%
来自团队:
fortran中每一行只能有一条语句,需要用续行符的地方也是一条语句太长写不完了才换行,而且续行符也不是分号,在cvf的.f90文件中使用“&”作为续行符,.for文件中有固定的格式来表示续行
为您推荐:
其他类似问题
fortran的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。fortran的自由格式一行可以写多少列_百度知道
fortran的自由格式一行可以写多少列
答题抽奖
首次认真答题后
即可获得3次抽奖机会,100%中奖。
把你的后缀改成f90或f95,不要用f或for之类,还有就是注释,换成!就可以了。其他应该不用改了。
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。

我要回帖

更多关于 高斯列主元消去法fortran 的文章

 

随机推荐