高分求fortran编写小程序
有A,B两个文件分别存放着整型数据。把既在A文件中存在,又在B文件中存在的整数找出存放文件C中,使C中的每个数据各不相同。没有格式要求一个文件里有多个数据具体个数没有要求...
有A,B两个文件分别存放着整型数据。把既在A文件中存在,又在B文件中存在的整数找出存放文件C中,使C中的每个数据各不相同。
没有格式要求 一个文件里有多个数据 具体个数没有要求的 只要满足题目要求的任何形式都行
完成后追加高分!!! 展开
没有格式要求 一个文件里有多个数据 具体个数没有要求的 只要满足题目要求的任何形式都行
完成后追加高分!!! 展开
2个回答
2009-06-06
展开全部
!发现你发了三个帖子,给你写一个。
!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
!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
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询