Fortran作业期末复习西南交大.docx

上传人:b****6 文档编号:4365397 上传时间:2022-11-30 格式:DOCX 页数:14 大小:319.46KB
下载 相关 举报
Fortran作业期末复习西南交大.docx_第1页
第1页 / 共14页
Fortran作业期末复习西南交大.docx_第2页
第2页 / 共14页
Fortran作业期末复习西南交大.docx_第3页
第3页 / 共14页
Fortran作业期末复习西南交大.docx_第4页
第4页 / 共14页
Fortran作业期末复习西南交大.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

Fortran作业期末复习西南交大.docx

《Fortran作业期末复习西南交大.docx》由会员分享,可在线阅读,更多相关《Fortran作业期末复习西南交大.docx(14页珍藏版)》请在冰豆网上搜索。

Fortran作业期末复习西南交大.docx

Fortran作业期末复习西南交大

编写两个子程序,分别求两个整数的最大公约数和最小公倍数,并编写主程序调用这两个子程序,输出结果

programx

integerm,n,s

write(*,*)"请输入两个数:

"

read(*,*)m,n

s=m*n

callacb(n,m)

callasd(n,m,s)

end

subroutineacb(n,m)

integertemp

if(m

temp=m;m=n;n=temp

endif

dowhile(mod(m,n)/=0)

temp=n;n=mod(m,n);m=temp

enddo

write(*,"('最大公约数为:

'i4)")n

return

end

subroutineasd(n,m,s)

if(m

temp=m;m=n;n=temp

endif

dowhile(mod(m,n)/=0)

temp=n;n=mod(m,n);m=temp

enddo

write(*,"('最小公倍数为:

'i4)")s/n

return

end

编写一个递归子程序,求Fibonacci数列某项的值。

并编写主程序调用该递归子程序,输出结果。

programx

integern,temp

write(*,*)"输入Fibonacci数列某项数,n大于三"

read(*,*)n

callabc(n)

end

subroutineabc(n)

integeri,j,temp,a(n)

a

(1)=1

a

(2)=1

doi=3,n

a(i)=a(i-1)+a(i-2)

enddo

temp=a(n)

write(*,"('Fibonacci数列n项的值为:

',i8)")temp

return

end

1:

输入10名学生的学号和一门课程的考试成绩,分别存入顺序文件和直接文件中。

每名学生的数据占一个记录。

分别对顺序文件和直接文件进行以下各项操作:

(1)从数据文件中读入数据,然后按学生的成绩优劣放在文件中,每个记录包含一名学生的数据。

(2)把文件中超过平均分的学生学号和记录输出出来。

programx

integera(10),b(10),i,j,tempA,tempB,sum

write(*,*)"请输入10个同学的学号和分数"

read(*,*)(a(i),b(i),i=1,10)

sum=0

doi=1,9

doj=i+1,10

if(b(i)

tempA=a(i)

tempB=b(i)

b(i)=b(j)

a(i)=a(j)

b(j)=tempB

a(j)=tempA

endif

enddo

enddo

doi=1,10

sum=a(i)+sum

enddo

open(unit=2,file='C:

\Users\Administrator\Desktop\f2.txt',status='new',access='sequential',form='formatted')

write(2,*)"按学生的成绩优劣排名"

write(2,"(2i5)")(a(i),b(i),i=1,10)

close

(2)

write(*,*)"超出平均分的有"

doi=1,10

if(b(i)>(sum/10))then

write(*,*)a(i),b(i)

endif

enddo

end

编程建立一个链表,每个节点的值为2,4,6,......,20,在第i个节点后插入一个节点,该节点的值为i+1。

然后删除第j个节点。

Programx

IntegerI,j,n,m,p,a(11)

Doi=1,10

A(i)=i*2

Enddo

m=10

Write(*,*)"请输入需要删除的节点位置i"

Read(*,*)n

DoI=1,m-1

If(n==i)then

m=m+1

doj=m-1,n,-1

A(j+1)=a(j)

enddo

A(i)=i+1

a(m)=a(m-1)+2

endif

Enddo

write(*,*)"插入节点后的数列为"

write(*,*)(a(i),i=1,m)

write(*,*)"请输入删除的节点位置j"

Read(*,*)p

DoI=1,m

If(p==i)then

doj=i,m-1

A(j)=a(j+1)

enddo

m=m-1

endif

Enddo

write(*,*)"删除后的数列为"

write(*,*)(a(i),i=1,m)

end

 

游泳池栏杆造价,和走廊地板造价

moduleABC

publicD,T,m,x

publicS1,A1

contains

subroutineS1(d,t,x)

integerL1,L2,L

L1=3.14*d*x

L2=3.14*t*x

l=L1+L2

write(*,*)"围栏总造价为",L

return

endsubroutine

subroutineA1(d,t,m)

integerA

A=((3.14)/4)*((d**2)-(t**2))*m

write(*,*)"地板总造价为",A

return

endsubroutine

subroutinesum(d,t,m,x)

integerss,L1,L2,A

L1=3.14*d*x

L2=3.14*t*x

l=L1+L2

A=((3.14)/4)*((d**2)-(t**2))*m

ss=A+L

write(*,*)"总费用为",ss

endsubroutine

endmodule

programx1

useABC

write(*,*)"请输入水池外围栏直径D"

read(*,*)d

write(*,*)"请输入水池内围栏直径T"

read(*,*)t

write(*,*)"请输入围栏造价X/m"

read(*,*)x

write(*,*)"请输入地板造价Y/m"

read(*,*)m

callS1(d,t,x)

callA1(d,t,m)

callsum(d,t,m,x)

stop

end

从a、b数列中,把那些在a中出现又在b中出现的数统统删去。

programmain

integerm1,m2,n1,n2

integera(100),b(100),c(100)

write(*,*)"请输入数组a元素的个数"

read(*,*)m1

write(*,*)"请输入数组b元素的个数"

read(*,*)m2

write(*,*)"请输入a数组"

do10i=1,m1

read(*,*)a(i)

10continue

write(*,*)"请输入b数组"

do20i=1,m2

read(*,*)b(i)

20continue

callquchong(a,m1)

callquchong(b,m2)

n1=m1

n2=m2

calldel(a,b,n1,n2)

pause

end

!

删除每个数组中重复的元素

subroutinequchong(a,n)

integera(n)

integern,j,x,p

p=1

do50while(p<=n)

j=p+1

do60while(j<=n)

if(a(p)==a(j))then

dox=j,n-1

a(x)=a(x+1)

enddo

n=n-1

j=j-1

endif

j=j+1

60continue

p=p+1

50continue

end

subroutinedel(a,b,m,n)

integera(m),b(n)

integerm,n,p

p=1

do50while(p<=m)

do60j=1,n

if(a(p)==b(j))then

dox=j,n-1

b(x)=b(x+1)

enddo

n=n-1

doy=p,m-1

a(y)=a(y+1)

enddo

m=m-1

p=p-1

endif

60continue

p=p+1

50continue

write(*,*)"删除后a数组元素有"

write(*,*)(a(i),i=1,m)

write(*,*)"删除后b数组元素有"

write(*,*)(b(i),i=1,n)

end

编程输出以下的方阵。

1161514131121110

217242312213169

318252211314158

4192021104567

56789

programmain

integerN

integerb(100,100)

write(*,*)"输入螺旋矩阵阶数N"

read(*,*)N

callABC(b,N)

end

subroutineABC(b,n)

integerb(100,100)

integerJ,K,N,I

p=n/2

b(1,1)=1

doK=1,p+1

if(K==1)then

doJ=K,N-K

b(J+1,K)=b(J,K)+1

enddo

else

doJ=K,N+1-K

b(J,K)=b(J-1,K)+1

enddo

endif

doI=K,N-K

b(N+1-K,I+1)=b(N+1-K,I)+1

enddo

doJ=N-K,K,-1

b(J,N+1-K)=b(J+1,N+1-K)+1

enddo

doI=N-K,K+1,-1

b(K,I)=b(K,I+1)+1

enddo

enddo

doi=1,N

write(*,"(i5)")(b(i,j),j=1,N)

enddo

endsubroutine

各个进制数转换为十进制

programx

integern

integerm

write(*,*)"请选择输入16/十六,8/八,2/二进制数"

read(*,*)n

selectcase(n)

case(16)

write(*,*)"请选择输入数据"

read(*,"(z10)")m

write(*,*)"转换为十进制后",m

case(8)

write(*,*)"请选择输入数据"

read(*,"(o10)")m

write(*,*)"转换为十进制后",m

case

(2)

write(*,*)"请选择输入数据"

read(*,"(b10)")m

write(*,*)"转换为十进制后",m

endselect

end

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 理学

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

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