哪位大神能回答一下,用fortran编的程序,出现一些问题。望指教

哪位大神能回答一下,用fortran编的程序,出现一些问题。望指教,第1张

“出现则输出相应的第二列第三列,进行加减运算”

这句里不清楚是否需要输出第一列的数据,我就只输出了第二、第三列。

需要第一列数据的话,改一下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进制数据用一个字符串表示等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9608240.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存