高分求fortran编写小程序

2024-11-28 03:41:41
推荐回答(2个)
回答1:

条件不够清楚,如a文件中数据个数,是一行一个数据,还是一个N个?或者个数不定?b文件也是。格式不同,编出来就不一样。
你补充一下。我帮你做。
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

!发现你发了三个帖子,给你写一个。
!2009-6-6晚编写,cvf6.5通过。
!数据文件要求:每行整数数据一个
!结果会自动写到c.txt中。
implicit none
integer,allocatable:: a(:),b(:),c(:),flag(:)
integer::RowA,RowB,i,j
character(len=1)::temp
!-------------------------------
!从a.txt中读数据至a数组
open(101,file="a.txt")
RowA=0
do while(eof(101)/=.true.)
read(101,"(a1)") temp
RowA=RowA+1
enddo
allocate(a(RowA))
rewind(101)
do i=1,RowA
read(101,*) a(i)
end do
close(101)
!-------------------------------
!从b.txt中读数据至b数组
open(102,file="b.txt")
RowB=0
do while(eof(102)/=.true.)
read(102,"(a1)") temp
RowB=RowB+1
enddo
allocate(b(RowB))
rewind(102)
do i=1,RowB
read(102,*) b(i)
end do
close(102)

!-------------------------------
!找a,b数组中不同的数据,用flag标记
allocate(c(rowa+rowb))
c(1:rowa)=a
c(rowa+1:rowa+rowb)=b

allocate(flag(rowa+rowb))
flag=0 !0表示不同,1表示相同,假设不同
do i=1,rowa+rowb-1
if(flag(i)==0) then
do j=i+1,rowa+rowb
if(c(i)==c(j)) then
flag(i)=1
flag(j)=1
end if
end do
end if

end do
!-------------------------------------
!不同的数据写到c.txt中
open(201,file="c.txt")
do i=1,rowa+rowb
if(flag(i)==0) then
write(201,*) c(i)
write(*,*) c(i)
end if
end do
close(201)
!-------------------------------
deallocate(a,b,c,flag)
stop
end

回答2:

先加分,我帮你