matliu 发表于 2016-1-14 09:53:09

动态数组输出的问题

最近在使用动态数组,我在数组输出中遇到了一个问题,具体的和网上的一个问题一样:
一个动态2维数组,现在要将该2维数组以行列的格式输出,这个输出语句该怎么写?

integer         ORDER, row, col
real,dimension(:,:),allocatable::S!动态数组S
read (*,*) ORDER
allocate(S(ORDER,ORDER))                !分配S空间
! 分配S中元素
do row=1, ORDER
         !!??此处的输出语句要求在一行上输出数组S中一行ORDER个元素
enddo

谢谢大家了!

vvt 发表于 2016-1-14 11:27:59

integer         ORDER, row, col
real,dimension(:,:),allocatable::S!动态数组S
read (*,*) ORDER
allocate(S(ORDER,ORDER))                !分配S空间
! 分配S中元素
do row=1, ORDER
Write(*,*) S( : , row )
enddo

li913 发表于 2016-1-14 16:20:56

http://fcode.cn/guide-45-1.html
FAQ之 文件行列与二维数组行列

matliu 发表于 2016-1-14 23:14:09

o, 我忘了说,每行输出的实数要有一定的格式,例如 F10.5

poorness 发表于 2016-1-29 22:59:30

integer    ORDER, row, col
real,dimension(:,:),allocatable::S
read (*,*) ORDER
allocate(S(ORDER,ORDER))      

character(len=40) :: fmtstring="(??(1x,f10.5))"
write(fmtstring(2:3),"(I2.2)") int(ORDER)

do row=1,ORDER
    write(*,fmtstring) S(row,:)
enddo

pasuka 发表于 2016-1-31 10:20:45

本帖最后由 pasuka 于 2016-1-31 10:22 编辑

直接用新标准的*就行,不用这么折腾program ex
implicit none
integer, parameter:: rows=5, cols=4
integer:: i, j
real(kind=8), allocatable:: array(:, :)
if(allocated(array))deallocate(array)
allocate(array(rows, cols))
array = 2.5D0
do i=1, rows
        write(*, '(*(1x, f12.5))')array(i, :)
enddo
end program

poorness 发表于 2016-2-2 20:38:19

:-victory:
页: [1]
查看完整版本: 动态数组输出的问题