谁能把每句fortran语言都给我翻译一下

1个回答

  • 我挑了其中一些有代表性的语句进行了注释,惊叹号(!)是Fortran里的注释.

    很多语句可以举一反三.

    integer row,i,j,k,n

    !声明了五个整型变量

    real s

    !声明实型变量

    real,dimension(:,:),allocatable::a,l,u

    !声明实型二维数组

    real,dimension(:),allocatable::b,x,y

    !声明实型一维数组

    read*,row

    !从键盘读数据row

    allocate(a(row,row))

    !给二维数组a分配内存空间

    read*,((a(i,j),j=1,row),i=1,row)

    !从键盘读数组a

    allocate(b(row))

    read*,(b(i),i=1,row)

    allocate(y(row))

    allocate(x(row))

    do k=1,row-1

    !循环语句,k从1循环到row-1

    do i=k+1,row

    a(i,k)=a(i,k)/a(k,k)

    do j=k+1,row

    a(i,j)=a(i,j)-a(i,k)*a(k,j)

    end do

    !变量j的循环体结束

    end do

    end do

    allocate(l(row,row))

    do i=1,row

    do j=1,row

    if(i>j)then

    !判断语句,i是否大于j

    l(i,j)=a(i,j)

    elseif(i==j)then

    l(i,j)=1

    else if(ij)then

    u(i,j)=0

    end if

    end do

    end do

    print*,'a=',((a(i,j),j=1,row),i=1,row)

    !在屏幕上输出数组a

    print*,'l=',((l(i,j),j=1,row),i=1,row)

    print*,'u=',((u(i,j),j=1,row),I=1,row)

    n=10

    do while(n>0)

    !满足n>0时循环

    y(1)=b(1)/l(1,1)

    do i=2,row

    sum=0

    do j=1,i-1

    sum=sum+l(i,j)*y(j)

    end do

    y(i)=(b(i)-sum)/l(i,i)

    end do

    print*,(y(i),i=1,row)

    x(row)=y(row)/u(row,row)

    do i=row-1,1,-1

    !i从row-1循环到1,步长是-1,也就是倒着循环

    sum1=o

    do j=i+1,row

    sum1=sum1+u(i,j)*x(j)

    end do

    x(i)=(y(i)-sum1)/u(i,i)

    end do

    print*,(x(i),i=1,row)

    s=abs(x(1))

    !abs是绝对值函数

    do j=2,row

    if(abs(x(j))>s)then

    s=abs(x(j))

    end if

    end do

    do i=1,row

    b(i)=x(i)/s

    end do

    n=n-1

    end do

    end

    !最后的end代表程序结束

    !这里应该是开始了一个子程序

    INTEGER ROW,COL,I,J,N

    REAL,DIMENSION(:,:),ALLOCATABLE::B

    REAL,DIMENSION(:),ALLOCATABLE::X,G

    READ*,row,col

    allocate(b(row,col))

    read*,((b(i,j),j=1,col),i=1,row)

    allocate(x(col),g(col))

    read*,(x(i),i=1,col)

    read*,(g(i),i=1,col)

    read*,n

    do while(n.ne.0)

    !.ne.是not equal的意思,也就是判断n是否不等于0

    do i=1,col

    sum=0

    do j=1,col

    sum=sum+b(i,j)*x(j)

    end do

    x(i)=sum+g(i)

    end do

    n=n-1

    print*,(x(i),i=1,col)

    end do

    end