Fortran上机作业(五)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

工程分析程序设计上机作业(五)

数组(1)

上机目的:练习数组的声明、存储、操作,以及数组参数、动态数组、数组函数的使用。

1、打印杨辉三角形(格式不限)。

1

1 1

1 2 1

1 3 3 1

1 4 6 4 1

program yanghui_triangle

implicit none

real::T(5,5) !第一个数代表列,第二个代表行

integer i,j

Do j=1,5

T(1,j)=1

T(j,j)=1

end Do

DO j=3,5

DO i=2,j

T(i,j)=T(i-1,j-1)+T(i,j-1)

end Do

end Do

print*,T

end program

2、输入两个矩阵,并用矩阵作为子程序的参数,用子程序完成任意两个矩阵的乘法。(如

果可能,用数组函数子程序来完成这一功能)

program array

integer,parameter::m=2,n=2 !只需要改变常量的大小即可改变数组形状

real A(m,n),B(m,n),C(m,n)

read*,A,B

call ar(A,B,m,n,C)

print*,C

end program

subroutine ar(A,B,m,n,C)

integer m,n

real A(m,n),B(m,n),C(m,n)

C=A*B

end subroutine

3、用“冒泡算法”对一个数列A(I)进行从小到大排序,步骤如下:(1)若A(2)

将A(2)与A(1)对换位置。(2)若A(3)

program maopao

implicit none

integer ,parameter::I=10

integer J,k

real A(I),temp

print*,'input',I,' numbers'

read*,A

DO j=1,I-1

DO k=1,I-j

if ( A(k)>A(k+1) ) then

temp=A(k)

A(k)=A(k+1)

A(k+1)=temp

end if

end do

end DO

print*,A

end program

4、从A、B两个数列中,把同时出现在两个数列中的数据删去。例如:

A:2 5 5 8 9 12 18

B:5 8 12 12 14

操作完成后:

A:2 9 18

B:14

program delete_num

implicit none

real,allocatable::A(:),B(:),C(:),D(:)!尝试用动态数组将比较后的数组分别存入C,D integer ::i,j,m,n,x=1,y=1

print*,'分别输入两个数组中元素个数m,n'

read*,m,n

allocate(A(m))

allocate(C(m))

allocate(B(n))

allocate(D(n))

print*,'输入数组A'

read*,A

print*,'输入数组B'

read*,B

DO i=1,m

Do j=1,n

if (A(i)==B(j)) exit

if (j==n.and.A(i)/=B(j)) then

C(x)=A(i)

x=x+1

endif

end do

enddo

DO i=1,n

Do j=1,m

if (B(i)==A(j)) exit

if (j==m.and.B(i)/=A(j))then

D(y)=B(i)

y=y+1

endif

enddo

enddo

write(*,'("输出两变化后的数组:")',advance='yes')

write(*,'("A:")',advance='no')

DO i=1,x-1

if (i/=x-1)then

write(*,'(f10.2)',advance='no') C(i)

else

write(*,'(f10.2)',advance='yes') C(i)

endif

enddo

write(*,'("B:")',advance='no')

DO i=1,y-1

if (i/=y-1)then

write(*,'(f10.2)',advance='no') D(i)

else

write(*,'(f10.2)',advance='yes') D(i)

endif

enddo

end program

相关文档
最新文档