“出现则输出相应的第二列第三列,进行加减运算”
这句里不清楚是否需要输出第一列的数据,我就只输出了第二、第三列。
需要第一列数据的话,改一下write21。
还有加减运算不清楚具体需要对哪些数据进行加法还是减法运算,
我就只对第二列和第三列数据进行了求和。
需要其他加减结果的话,改一下write22。
!
implicit none
integer a(10,3),b(5),i,j
! 读取文件A
open(11,file='Atxt')
do i=1,10
read(11,) (a(i,j),j=1,3)
end do
close(11)
! 读取文件B
open(12,file='Btxt')
do i=1,5
read(12,) b(i)
end do
close(12)
! 比较A和B,并输出结果
open(21,file='resulttxt')
open(22,file='sumtxt')
do i=1,5
do j=1,10
if(a(j,1)eqb(i)) then
write(21,) a(j,2),a(j,3)
write(22,) a(j,2)+a(j,3)
end if
end do
end do
close(21)
close(22)
stop
end
很久不用fortran了 刚调试了一下 可以通过
program main
implicit none
real(4)::a(10),b(8),c(5)
print,"enter a(10):"
read,a
print,"enter b(8):"
read,b
print,"enter c(5):"
read,c
call sort(a,10)
call sort(b,8)
call sort(c,5)
print,"a:",a
print,"b:",b
print,"c:",c
end program main
subroutine sort(array,n)
implicit none
integer::n,i,j,k
real(4)::array(n)
do i=1,n
do j=i+1,n
if(array(i)>array(j))then
k=array(i)
array(i)=array(j)
array(j)=k
end if
end do
end do
end subroutine sort
fortran77程序,10进制整数转2进制:
character32 ch
call d2b(987654321,ch)
write(,) ch
stop
end
subroutine d2b(x,c)
character1 c
dimension c(32)
integer i,k,x
k=32
10 m=mod(x,2)
x=x/2
if (meq1) then
c(k)='1'
else
c(k)='0'
endif
k=k-1
if (xgt0) goto 10
do 20 i=1,k
c(i)='0'
20 continue
return
end
优势如下:
1、FORTRAN历史悠久
自成立以来,距第一个FORTRAN计划诞生已有近50年的时间。长期以来,FORTRAN一直是科学计算语言的唯一选择。相比之下,C / C ++和Matlab迟了将近20年。
2、FORTRAN具有严格的语法要求
FORTRAN更适合严格的科学计算领域。就像C不会检查数组越界一样,如果访问了错误的地址,则计算结果是不可预测的。
3、FORTRAN可以直接对数组和复数进行运算
像C来完成两个矩阵的加法执行两个循环,或调用具有5个形式参数的函数一样,尽管C ++可以完成C = A + B的简单形式,但是基于矩阵类的定义及其成员函数,在重载运算符的基础上,矩阵的初始化成为矩阵类的初始化,增加了工作量。
而FORTRAN可以直接完成矩阵C = A + B。
4、FORTRAN是编译语言
与Matlab相比,FORTRAN是一种编译语言,Matlab与解释型语言类似,并且循环效率更高,因此,如果Matlab要使用很多循环,则必须调用C / C ++或FORTRAN程序。
扩展资料:
Fortran是矩阵运算最方便的语言,通常用于高能物理学,气象学,航空航天等领域的方程计算问题,计算矩阵(array)的计算非常有效。
MKL和IMSL是著名的数学库,Fortran在某些领域仍然受欢迎的原因是,一方面,Fortran具有强大的数学运算能力和高效率。 另一方面,这是因为前辈对于许多问题都有成熟的代码,所以直接使用即可,而不是先考虑算法的答案,然后再对其进行改进。
矩阵越大,方程越复杂,Fortran和matlab这两种语言之间的差异就越大。
就跟在主程序里面的定义函数一样,主程序和子程序的变量也可以是相同的,
如,subroutine (,,、、)
implicit none
real :: a,b,c,d、、、、
、、、
real,external :: add
c=add(a,b)+d
、、、、
return
end subroutine
function add(a,b)
implicit none
real :: a,b
real :: add
add=a+b
return
end
大概就是这样
FORTRAN程序由一个主程序或一个主程序与若干个子程序组成。主程序与子程序都是一个独立的程序单位,称为一个程序模块。[1]
1、程序分段:一个程序由一个或若干个程序单位组成。主程序和每一个子程序分别是一个独立的程序单位。子程序是实现模块化的有效方法。
2、每一个程序单位都是以“END”语句结束。主程序段中的END语句作用是使程序“停止运行”;子程序段中的END语句是“使流程返回调用程序”。
3、一个程序有且仅有一个主程序段,可以有0个或若干个子程序段。
4、一个程序单位包括若干行。FORTRAN行分为两类:即语句行和非语句行。
其中语句行由一个FORTRAN语句组成。FORTRAN语句又可分为执行语句和非执行语句。非语句行,即为注释行。
5、FORTRAN程序的基本成份是语句。一行只能有一个语句。若一个语句太长,一行内写不下,可分写在几行上,但要用“续行标志”。
6、FORTRAN程序中语句允许有标号,以便被其他句引用。
7一个程序单位中各类语句的位置是有一定规则的。一般是非执行语句放在所有可执行语句之前。[2]
以上就是关于哪位大神能回答一下,用fortran编的程序,出现一些问题。望指教全部的内容,包括:哪位大神能回答一下,用fortran编的程序,出现一些问题。望指教、帮忙编一个fortran语言程序~、fortran语言,编写程序,把10进制数据转换为2进制,所得的2进制数据用一个字符串表示等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)