ImageVerifierCode 换一换
格式:DOCX , 页数:23 ,大小:19.03KB ,
资源ID:9907174      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9907174.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(西安交通大学fortran习题.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

西安交通大学fortran习题.docx

1、西安交通大学fortran习题1 二维数组的输入与输出program mainimplicit noneinteger i,jinteger A(2,2)!若为data(A(j,i),i=1,2),j=1,2)/1,2,3,4/print*,Aend !结果为 1 3 2 4实际为A(1,1)=1 A(1,2)=2 A(2,1)=3 A(2,2)=4!若为data(A(i,j),i=1,2),j=1,2)/1,2,3,4/print*,Aend !结果为 1 2 3 4实际为A(1,1)=1 A(2,1)=2 A(1,2)=3 A(2,2)=4program mainimplicit none

2、integer i,jinteger A(2,2)data(A(i,j),i=1,2),j=1,2)/1,2,3,4/write(*,(I3,I3)Aend !结果为 1 2 3 4翻卡片!用数组编写下面的题目:假定有一叠卡片,卡片号为1到52,并且所有卡片的正面朝上。从卡片号2开始,把凡是偶数的卡片都翻成正面朝下。再从3号卡片开始,把凡是卡片号为3的倍数的卡片都翻一个面(即把正面朝上的翻成正面朝下,正面朝下的翻成正面朝上)。下一步从4号卡片开始,把凡是卡片号为4的倍数的卡片都翻一个面,依次类推,直到从52号卡片开始,把凡是卡号为52的倍数的卡片翻一个面。写出一个程序,来测定全过程完成后,哪些

3、卡片的面朝上,共有几张。答案:正面朝上的卡片是第1、4、9、16、25、36、49张,共7张。program mainimplicit none integer s(52)integer i,js=0do i=2,52j=ido while(j=52)s(j)=s(j)+1j=j+iend doend dodo i=1,52if(mod(s(i),2)=0)thenwrite(*,*)iend ifend doend program main/用C语言写#includeint main() int s52;int i,j;for(i=0;i52;i+)si=0;for(i=1;i=51;i+)

4、 for(j=i;j=51;j+=i+1)/ 也可以写作j=j+i+1,不能写作j=j+i+1 sj=sj+1; 斐波拉契!使用递归时result()不能与函数名相同PROGRAM MAINIMPLICIT NONEINTEGER n,i,sumread*,nif(n1)thendo h=2,i-1if(mod(i,h)=0)thenf=f+1endifend doendifend functionprogram mainimplicit noneinteger(4) i,j,n,finteger sdo n=4,600,2s=0j=0do i=1,n/2-1j=n-iif(f(i)=0.an

5、d.f(j)=0)thens=s+1end ifend doif(s=0)thenprint*,n,不满足猜想elseprint*,n,send ifend doend program 黄金值法解方程!将中值法中取中点的值改为取黄金点的值,理论上可以提高效率module golden_sectionimplicit nonereal a,b,ccontainssubroutine sub1(a,b,c)real a,b,c,ycc=(a*0.618+b)/1.618yc=f(c)do while(abs(yc)0.00001)if(yc*f(a)0)print*,f(a)=,f(a);f(b)

6、=,f(b);请重新输入下界aread*,aprint*,请重新输入解的下界bread*,bend docall sub1(a,b,c)end ifprint*,cend回文输出program mainimplicit noneinteger i,jinteger a(5),b(5)data a /1,2,8,2,10/data b /2,3,4,5,6/do i=1,5 do j=1,5 b(j)=b(j)-1 if(b(j)1)then b(j)=b(j)+5 end if end do print*,a(b(1:5)!实践证明这是正确的输出方法end doend! forall语句中不能

7、使用if语句,但可以用where语句,注意()中的内容变化但本题从逻辑上就应该先做完forall,再做where,故不必嵌套program mainimplicit noneinteger i,jinteger a(6),b(6)DATA a /1,4,9,16,25,36/data b /2,3,4,5,6,7/do i=1,6forall(j=1:6)b(j)=b(j)-1end forallwhere(b=0) !可以写为where(b(:)=0) b(:)=b(:)+6 end whereb=b+6end whereprint*,a(b(1:6)!实践证明这是正确的输出方法end do

8、回文数据若干相邻想和并比较大小!1.圆盘上有如图1(1)所示的20个数。请找出哪四个相邻的数之和为最大。请指出他们的位置和数值。如果是1(2)图,又是哪四个相邻的数?program mainimplicit noneinteger a(20),b(23),c(20)integer i,j,d,edata a /20,21,8,4,13,6,10,15,2,17,3,19,7,16,8,11,14,9,12,5/data b /1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,1,2,3/do i=1,20c(i)=a(b(i)+a(b(i+1

9、)+a(b(i+2)+a(b(i+3)end doe=1do i=1,19 if(c(1)c(i+1)then d=c(1) c(1)=c(i+1) c(i+1)=d e=i+1 end ifend doprint*,c(1)write(*,*)(a(b(i),i=e,e+3)end /用C语言写,注意C的数组从0开始计数,所有的i变量减一;嵌套数组仍然有效#includeint main() int a20=20,21,8,4,13,6,10,15,2,17,3,19,7,16,8,11,14,9,12,5; int b23=0,1,2,3,4,5,6,7,8,9,10,11,12,13,1

10、4,15,16,17,18,19,0,1,2; int c20; int i,j,d,e; for(i=0;i=18;i+) ci=abi+abi+1+abi+2+abi+3; e=0; for(i=0;i=18;i+) if(c0ci+1) d=c0; c0=ci+1; ci+1=d; e=i+1; printf(和最大的是%d,这四个数是:n,c0); for(i=e;i=e+3;i+) printf(%d,abi);return 0;!圆盘上有如图所示的K个数。请找出哪l个相邻的数之和为最大。请指出他们的位置和数值。program mainimplicit noneinteger i,j

11、,d,einteger k,linteger,allocatable: a(:),b(:),c(:)print*,请输入数据的总数read*,kprint*,请输入求和的元素个数read*,lallocate(a(k),b(k+l-1),c(k)print*,请依次输入数据do i=1,kread*,a(i)end dodo i=1,kb(i)=iend dodo i=k+1,k+l-1b(i)=i-kend dodo i=1,kdo j=i,i+l-1c(i)=c(i)+a(b(j) !一维数组嵌套的功能可由二维数组代替end doend doe=1do i=1,k-1 if(c(1)c(i

12、+1)then d=c(1) c(1)=c(i+1) c(i+1)=d e=i+1 end ifend doprint*,和最大为,c(1), 这些数为write(*,*)(a(b(i),i=e,e+l-1)end 计算六边形的面积PROGRAM MAINIMPLICIT NONEREAL AREA, L1,L2,L3,L4,L5,L6,L7,L8,L9,L10,L11,L12PRINT*,请输入将六边形分割成三角形后各个三角形的边长PRINT*,第一个三角形三边为READ*,L1,L2,L3PRINT*,第二个三角形三边为READ*,L4,L5,L6PRINT*,第三个三角形三边为READ*

13、,L7,L8,L9PRINT*,第四个三角形三边为READ*,L10,L11,L12AREA=F(L1,L2,L3)+F(L4,L5,L6)+F(L7,L8,L9)+F(L10,L11,L12)write(*,*)AREACONTAINSFUNCTION F(A,B,C)REAL F,A,B,C,SS=(A+B+C)/2F=SQRT(S*(S-A)*(S-B)*(S-C)END FUNCTIONEND 计算最大公约数和最小公倍数PROGRAM MAIN!计算两个数的最小公倍数与最大公约数IMPLICIT NONEINTEGER X,Y,F,GPRINT*,请输入两个正整数READ*,X,YG=

14、X*Y/F(X,Y)write(*,*)最大公因数为,F(X,Y)write(*,*)最小公倍数为,GEND PROGRAM MAIN !FFUNCTION F(X,Y)IMPLICIT NONEINTEGER X,Y,Z,FIF(XY)THENX=ZELSEX=YY=ZENDIFZ=X-YEND DOF=ZEND FUNCTION牛顿法解方程!牛顿法解方程,效率高,但是方程有多解时,解对初值很敏感;另外还要求函数处处可导module newtonimplicit none real x,y,k,vcontains subroutine sub1(x)real x,k,yreal dxdx=0

15、.00001y=f(x)k=(f(x)-f(x-dx)/dxdo while(abs(y)0.00001)x=x-y/k !注意方程不要解错y=f(x)end doend subroutinefunction f(x)real f,xf=x*x-4.0*x+3end functionend module newtonprogram mainuse newtonimplicit none print*,请输入初值x: read*,xcall sub1(x)print*,xend program main牛追人问题!用派生定义坐标,但没有定义向量运算符本题可以不用派生,直接定义坐标变量,应该可以简

16、化。精度由v的增量,时间间隔t,判定相遇的临界距离三者决定module module1implicit nonetype vectorreal xreal yend type!下面的声明语句可以不要,但私下下认为不应省略type (vector):va,vc,ra,rc,dr !模块中定义了type后,其他例程都不用再定义但要声明变量real v,tcontainsfunction norm(r)real normtype(vector):rnorm=(r.x*r.x+r.y*r.y)*0.5end functionsubroutine sub1(v,ra)type (vector):va,v

17、c,ra,rc,drreal v,tt=0.1ra.x=10ra.y=50rc.x=0rc.y=0vc.x=5.0/(26*0.5)vc.y=5.0/(26*0.5)*5va.x=v*2.0/(5*0.5)va.y=v*(-1.0)/(5*0.5)dr.x=ra.xdr.y=ra.y do while(norm(dr)1) rc.x=rc.x+vc.x*trc.y=rc.y+vc.y*tra.x=ra.x+va.x*tra.y=ra.y+va.y*tdr.x=ra.x-rc.xdr.y=ra.y-rc.yvc.x=5*dr.x/(norm(dr)vc.y=5*dr.y/(norm(dr)end

18、 doend subroutine sub1end module program mainuse module1implicit nonev=0print*,小孩的速度应为ra.x=10ra.y=50do while(ra.xpprint*,aend ifendsubroutine program mainimplicit noneinteger iinteger ,target:pdo p=1900,2008call sub1(p)end doend program mai最大公约数!辗转相除法PROGRAM MAINIMPLICIT NONEINTEGER M,NPRINT*,请输入两个正

19、整数read*,M,Nprint*,他们的最大公约数为print*,F(M,N)containsFUNCTION F(M,N)integer M,N,F,I,PI=1IF(MN)THEN P=MM=NN=PEND IFDO WHILE(I/=0)I=MOD(M,N)M=NN=IEND DOF=MEND FUNCTIONEND PROGRAM!秦九韶算法PROGRAM MAINIMPLICIT NONEINTEGER M,NPRINT*,请输入两个正整数read*,M,Nprint*,他们的最大公约数为print*,F(M,N)containsFUNCTION F(M,N)integer M,N,F,I,PI=1DO WHILE(I/=0)IF(M=0.0000006)I=I+1A=A*(-1)*X*X/(I*2+1)/(2*I)SIN=SIN+AEND DOEND SUBROUTIN

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1