- 1、本文档共4页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Fortran上机作业(五)
工程分析程序设计 上机作业(五)
数组(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
输入两个矩阵,并用矩阵作为子程序的参数,用子程序完成任意两个矩阵的乘法。(如果可能,用数组函数子程序来完成这一功能)
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
用“冒泡算法”对一个数列A(I)进行从小到大排序,步骤如下:(1)若A(2)A(1),则将A(2)与A(1)对换位置。(2)若A(3)A(2),则将A(3)与A(2)对换位置;然后再重复步骤(1)。(3)对A(4)、A(5)等数列中的所有数,重复以上算法,直到整个数组中的元素从小到大排列。(因为这种算法的特点是,每个元素总是和比它大的数交换位置,小的元素不断“上浮”,象水中的气泡不断上浮一样,所以称之为“冒泡算法”)
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
从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
writ
文档评论(0)