Fortran上机作业(五).docVIP

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 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)

xy88118 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档