Fortran作业期末复习西南交大Word格式.docx
- 文档编号:17290789
- 上传时间:2022-11-30
- 格式:DOCX
- 页数:14
- 大小:319.46KB
Fortran作业期末复习西南交大Word格式.docx
《Fortran作业期末复习西南交大Word格式.docx》由会员分享,可在线阅读,更多相关《Fortran作业期末复习西南交大Word格式.docx(14页珍藏版)》请在冰豆网上搜索。
最大公约数为:
'
i4)"
)n
return
subroutineasd(n,m,s)
最小公倍数为:
)s/n
编写一个递归子程序,求Fibonacci数列某项的值。
并编写主程序调用该递归子程序,输出结果。
integern,temp
输入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)
temp=a(n)
Fibonacci数列n项的值为:
i8)"
)temp
1:
输入10名学生的学号和一门课程的考试成绩,分别存入顺序文件和直接文件中。
每名学生的数据占一个记录。
分别对顺序文件和直接文件进行以下各项操作:
(1)从数据文件中读入数据,然后按学生的成绩优劣放在文件中,每个记录包含一名学生的数据。
(2)把文件中超过平均分的学生学号和记录输出出来。
integera(10),b(10),i,j,tempA,tempB,sum
请输入10个同学的学号和分数"
read(*,*)(a(i),b(i),i=1,10)
sum=0
doi=1,9
doj=i+1,10
if(b(i)<
b(j))then
tempA=a(i)
tempB=b(i)
b(i)=b(j)
a(i)=a(j)
b(j)=tempB
a(j)=tempA
endif
enddo
doi=1,10
sum=a(i)+sum
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)
超出平均分的有"
if(b(i)>
(sum/10))then
write(*,*)a(i),b(i)
编程建立一个链表,每个节点的值为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)
A(i)=i+1
a(m)=a(m-1)+2
Enddo
插入节点后的数列为"
write(*,*)(a(i),i=1,m)
请输入删除的节点位置j"
Read(*,*)p
DoI=1,m
If(p==i)then
doj=i,m-1
A(j)=a(j+1)
m=m-1
删除后的数列为"
游泳池栏杆造价,和走廊地板造价
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
围栏总造价为"
L
endsubroutine
subroutineA1(d,t,m)
integerA
A=((3.14)/4)*((d**2)-(t**2))*m
地板总造价为"
A
subroutinesum(d,t,m,x)
integerss,L1,L2,A
ss=A+L
总费用为"
ss
endmodule
programx1
useABC
write(*,*)"
请输入水池外围栏直径D"
read(*,*)d
请输入水池内围栏直径T"
read(*,*)t
请输入围栏造价X/m"
read(*,*)x
请输入地板造价Y/m"
read(*,*)m
callS1(d,t,x)
callA1(d,t,m)
callsum(d,t,m,x)
stop
从a、b数列中,把那些在a中出现又在b中出现的数统统删去。
programmain
integerm1,m2,n1,n2
integera(100),b(100),c(100)
请输入数组a元素的个数"
read(*,*)m1
请输入数组b元素的个数"
read(*,*)m2
请输入a数组"
do10i=1,m1
read(*,*)a(i)
10continue
请输入b数组"
do20i=1,m2
read(*,*)b(i)
20continue
callquchong(a,m1)
callquchong(b,m2)
n1=m1
n2=m2
calldel(a,b,n1,n2)
pause
!
删除每个数组中重复的元素
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
subroutinedel(a,b,m,n)
integera(m),b(n)
integerm,n,p
=m)
do60j=1,n
if(a(p)==b(j))then
b(x)=b(x+1)
doy=p,m-1
a(y)=a(y+1)
m=m-1
p=p-1
删除后a数组元素有"
write(*,*)(a(i),i=1,m)
删除后b数组元素有"
write(*,*)(b(i),i=1,n)
编程输出以下的方阵。
1161514131121110
217242312213169
318252211314158
4192021104567
56789
integerN
integerb(100,100)
输入螺旋矩阵阶数N"
read(*,*)N
callABC(b,N)
subroutineABC(b,n)
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
else
doJ=K,N+1-K
b(J,K)=b(J-1,K)+1
enddo
doI=K,N-K
b(N+1-K,I+1)=b(N+1-K,I)+1
doJ=N-K,K,-1
b(J,N+1-K)=b(J+1,N+1-K)+1
doI=N-K,K+1,-1
b(K,I)=b(K,I+1)+1
doi=1,N
write(*,"
(<
n>
i5)"
)(b(i,j),j=1,N)
enddo
各个进制数转换为十进制
integern
integerm
请选择输入16/十六,8/八,2/二进制数"
selectcase(n)
case(16)
请选择输入数据"
read(*,"
(z10)"
)m
转换为十进制后"
m
case(8)
(o10)"
case
(2)
(b10)"
endselect
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Fortran 作业 期末 复习 西南 交大