您的位置:首页 > 编程语言

基础编程入门题目-Fortran-参考代码

2018-04-03 09:07 501 查看

Problem 15

program p15BubbleSort

integer i,j,N,bubble
integer,allocatable :: a(:)

read *,N
allocate(a(N))

do i=1,N
read *,a(i)
end do

do  i=1,N
do j=1,n-i
if(a(j)>a(j+1) )then
bubble=a(j)
a(j)=a(j+1)
a(j+1)=bubble
end if
end do
end do

write (*,100),a

deallocate(a)
100 FORMAT(1X,100I4)
end program p15BubbleSort


Problem 14

pass


Problem 13

program no13
real a,b,middle,fa,fm,k
real , parameter :: epsilon=0.000001
read *,k
a=0.0
b=10.0

do while((b-a)>epsilon)
middle=(a+b)/2
fa=a**2-k
fm=middle**2-k
if(fa*fm<0) then
b=middle
else
a=middle
end if

end do
write (*,*) middle
end


Problem 12

program no12
real area,distance
real x1,x2,x3,y1,y2,y3
real dist_a,dist_b,dist_c

read *,x1,y1
read *,x2,y2
read *,x3,y3

dist_a=distance(x1,y1,x2,y2)
dist_b=distance(x3,y3,x2,y2)
dist_c=distance(x1,y1,x3,y3)
s=area(dist_a,dist_b,dist_c)
write (*,*) s
end

function distance(x1,y1,x2,y2) result (res)
real::res,x1,y1,x2,y2,dx,dy
dx=x2-x1
dy=y2-y1
res=sqrt(dx**2+dy**2)
end

function area(a,b,c) result (res)
real::res,a,b,c,p
p=(a+b+c)/2
res=sqrt(p*(p-a)*(p-b)*(p-c))
end


Problem 11

program no11
real x1,x2,y1,y2,dist
read *,x1,y1
read *,x2,y2
dist=sqrt((x1-x2)**2+(y1-y2)**2)
write (*,*) dist
end


Problem 10

program no10
real a,b,c,delta
read *,a,b,c
delta=b**2-4*a*c
if(delta<0) then
write (*,*) "No solution"
else if (delta==0) then
write (*,*) -b/(2*a)
else
write (*,*) (-b+sqrt(delta))/(2*a),(-b-sqrt(delta))/(2*a)
end if
end


Problem 9

program no9
integer a,b,c
do a=1,100
do b=a,100
do c=b,100
if(a**2+b**2==c**2) then
write (*,*) a,b,c
exit
end if
end do
end do
end do

end


Problem 8

program no8

implicit none
real x,y
read *,x
if(x<=15)   then
y=4*x/3
else
y=2.5*x-17.5
end if
write(*,100) y
100 FORMAT(F10.2)
end


Problem 7

program no7
implicit none
integer n
read *,n
do while (n>1 )
if(mod(n,2)==0) then
n=n/2
else
n=3*n+1
end if
write (*,*) n
end do

end


Problem 6

program no6
implicit none
integer i,N,dist
real bike_Time,walk_Time
read *,N
do i=1,N
read *,dist
walk_Time=dist/1.2
bike_Time=dist/3.0+23+27
if(walk_time<bike_Time) then
write (*,*) "Walk"
else if(walk_Time>bike_time) then
write (*,*) "Bike"
else
write (*,*) "All"
end if
end do

end


Problem 5

program p5
implicit none
integer i,N,x,count_1,count_5,count_10
count_1=0
count_5=0
count_10=0
read *,N
do i=1,N
read *,x
if(x==1)    count_1=count_1+1
if(x==5)    count_5=count_5+1
if(x==10)   count_10=count_10+1
end do
write (*,*) count_1
write (*,*) count_5
write (*,*) count_10
stop
end


Problem 4

program no4
real c,meter
integer foot,inch,EnMeter
read *,c
meter=c/100
meter=meter*12/0.3048
EnMeter=meter
foot=EnMeter/12
inch=mod(EnMeter,12)
Write (*,*) foot
write (*,*) inch
end


Problem3

Program no3
integer N,i,a
a=1
do i=1,N
write (*,*) a
a=a+2
end do
write (*,*) a
end


Problem2

在问题1上稍做改动即可,注意控制循环

Program no2
integer i,left,right,sum
sum=0
read *,left,right
do i=left,right
sum=sum+i**2
end do
write (*,*) sum
end


Problem1

简单的循环结构

Program no1
integer i,left,right,sum
sum=0
read *,left,right
do i=left,right
sum=sum+i
end do
write (*,*) sum
end
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: