第四章
1.program main bad.\
implicit none write(*,*) \ good time.\
write(*,*)
\
not
write(*,*) '\
2.program main 输入半径长 \ 3.program main write(*,\
4.integer a,b real 5.program main
real, parameter :: PI=3 implicit none.14159 real radius write(*,*) \ 请 read(*,*) radius write(*,\ 面积 ='f8. 3)\ radius*radius*PI end program
implicit none
real grades
write(*,*) \请输入成绩 \
read(*,*) grades
调整后成绩为 'f8.3)\
ra,rb a=2 b=3 ra=2.0 rb=3.0 write(*,*) b/a
! 输出 1,
因为使用整数计
算, 小数部分会无条件舍去 type(distance) :: d d%inch = d%cm/2.54 end program
write(*,*) rb/ra
! 输出 1.5
implicit none type distance real meter, inch, cm end type
write(*,*) \请输入长度 :\
read(*,*) d%meter
d%cm = d%meter*100
d%cm, d%inch
write(*,\ 米 ='f8.3' 厘米 ='f8.3' 英寸 ')\
第五章
real
1.program main implicit none \
read(*,*) money
else
integer money
end if
tax write(*,*) \ 请输入月收入 else if ( money<5000) then
nint(money*tax)
if ( money<1000 ) then tax = 0.15
tax = 0.03
tax = 0.1 program 星期几 \
write(*,\
税金为 'I8)\
end 请输入
tv
2.program main = \电视剧 \ 3.program main read(*,*) age 0.15
end if
else
implicit none
integer day tv = \卡通 \ end select
character(len=20) :: tv case(1,4) case(7)
write(*,*) \ case(2,5)
read(*,*) day select case(day) tv = \新闻 \ tv = \电影 \ end program
case(3,6)
case default
write(*,*) \ 错误的输入 \
write(*,*) else
stop write(*,*) tv read(*,*)
implicit none
integer age, money real tax money
write(*,*) tax = 0.10
\请输入年龄 \
if tax =
else
\请输入月收入 \ if ( age<50 ) then else if ( money<5000 )then
( money<1000 ) then tax = 0.7
tax = 0.03
end if
else if ( money<5000 )then
tax = 0.5
end if
if ( money<1000 ) then
tax = 0.10
write(*,\ 税金为 'I8)\
end program 4.program main
implicit none
integer year, days
logical mod_4, mod_100, mod_400
mod_100 = write(*,\ 这
write(*,*) \请输入年份 \ ( MOD(year,100) == 0 ) 一年有 'I3' 天 ')\
read(*,*) year mod_400 = (
mod_4
else
= ( MOD(year,4) == 0 )
MOD(year,400) == 0 )
if ( (mod_4 .NEQV.
mod_100) .or. mod_400 ) then
days = 366
days = 365 end if
stop end program
第六章
integer i
1.program main stop end program 2.program main end do
implicit none
do i=1,5
write(*,*)
\
end do
implicit none
integer i,sum
sum = 0
do i=1,99,2
sum = sum+i
write(*,*) sum stop end program
3.program main max = 5
implicit none integer, parameter :: answer = 45 do i=1,max
integer, parameter ::
read(*,*) weight \猜对了 \
integer weight, i
write(*,*) \ 请输入体重 \
if ( weight==answer ) exit write(*,*) \ 猜错了 \ 4.program main ans
end do
if ( i<=max ) then
write(*,*)
else
end if stop end program
do i=2,max
implicit none integer, parameter :: max=10 integer i
real item real
ans = 1.0 item = 1.0 item = item/real(i) ans = ans+item
end do write(*,*) ans
stop end program
5.program main input, output end do
implicit none integer i,j
integer, parameter :: length = 79 write(*,*) \请输入一个字串 \
character(len=length) ::
j=1 end if
read(*,\ input
do i=1, len_trim(input)
if ( input(i:i) /= ' ' ) then
output(j:j)=input(i:i)
j=j+1
write(*,\
stop end program 第七章
1.program main a(max) = (/ (2*i, 2.integer a(5,5) integer d( -5:5) f(1)=0
implicit none
integer, parameter :: max = 10
integer i
integer :: write(*,*)
i=1,10) /) integer :: t ! sum() 是 fortran
库 函 数
real(sum(a))/real(max) stop end program
! 5*5=25 integer b(2,3,4) implicit none
! 2*3*4=24 integer c(3,4,5,6) ! 3*4*5*6=360
! 11 integer e( -3:3, -3:3)
! 7*7=49
3.program main
f(2)=1
stop end program 4.program
integer, parameter :: max=10
f(i)=f(i -1)+f(i-2)
integer f(max) integer i
f
do i=3,max
end do
write(*,\
main implicit none
integer, parameter :: size=10
integer :: a(size)
= (/
5,3,6,4,8,7,1,9,2,10 /) end do
integer :: i,j
integer :: t t=a(i)
do i=1, size-1 do j=i+1, size
end do
if ( a(i) < a(j) ) then ! a(i) 跟 a(j)交换
write(*,\
a(i)=a(j)
a(j)=t
end if
a
stop end 5.a(2,2) ! 1+(2 -1)+(2-1)*(5)
= 7 a(3,3) !
1+(3-1)+(3-1)*(5) = 13 1.program main read(*,*) radius program
real radius, area 输入半径长 \ program real radius subroutine
第八章
implicit none real radius, area write(*,*) \请 输 入 半 径 长 \
call CircleArea(radius, area) area = radius*radius*PI implicit none read(*,*) radius
write(*,\ 面积 = 'F8.3)\ implicit none
stop end
subroutine CircleArea(radius, area)
real, parameter :: PI=3.14159
return end subroutine
2.program main real radius write(*,\
real, external :: CircleArea write(*,*) \请
面积 = 'F8.3)\ CircleArea(radius) implicit none
stop end
real function
CircleArea(radius)
real, parameter :: PI=3.14159
CircleArea = radius*radius*PI return end function
implicit none
3.program main call bar(3) none
call bar(10)
stop end program
bar(length)
implicit
integer, intent(in) do i=1,length
:: length
integer
i
character(len=79) :: string write(*,\ 4.program main ( n<0 ) then 5.program main integer function SMALL=min(A,B) exit
string=\
string(i:i)='*'
end do
return end subroutine
implicit none sum=0 return implicit none gcd(A,B)
integer, external :: add
write(*,*) add(100) end program
integer, intent(in)
recursive integer function add(n) result(sum)
implicit none
:: n
if sum
else if ( n<=1 ) then
sum=n return end if
= n + add(n-1) return end function
integer, external :: gcd
write(*,*) gcd(18,12) end program
implicit none SMALL=TEMP
integer A,B,BIG,SMALL,TEMP
TEMP=mod(BIG,SMALL)
BIG=max(A,B) if ( TEMP==0 )
do while( SMALL /= 1 ) use TextGraphLib
BIG=SMALL
end do gcd=SMALL
return end function
xinc =
call call
6.program main maxy=20
implicit none integer i,px,py
integer, parameter :: maxx=60,
real, parameter ::
call SetScreen(60,20)
real, parameter :: StartX=0.0, EndX=3.14159*2.0
real x
(EndX-StartX)/(maxx -1) SetCurrentChar('*')
x=StartX do px=1,maxx py = (maxy/2)*sin(x)+maxy/2+1
PutChar(px,py) x=x+xinc
end docall UpdateScreen()
第九章
stop end program
1.program main integer, parameter write(*,*)
\
implicit none :: fileid = 10
character(len=79) integer count
:: character(len=79)
:: buffer ) then
integer :: status = 0 , exist=alive)
logical alive do while(.true.)
read (*,\ inquire( if ( alive
open(unit=fileid, , & 出 循环 pause end if
access=\
count = 0
read(unit=fileid, fmt=\
write(*,\
end if
if ( status/=0 ) exit write(*,*)
! 没有资料就跳
) then
buffer
count = count+1 else
if ( count==24
count = 0 stop end
end do
TRIM(),\ doesn't exist.\
2.program main read (*,\
implicit none character(len=79)
::
character(len=79) logical alive
:: buffer
integer, parameter :: fileid = 10
integer i integer :: status = 0
do while(.true.)
) exit
write(*,*) \ fmt=\
do i=1,
inquire( , exist=alive)
if ( alive ) then
open(unit=fileid, , &
access=\ status=\ iostat=status ) buffer len_trim(buffer) buffer social,
read(unit=fileid, end do
if ( status/=0 ! 没有资料就跳出循环 -3 )
buffer(i:i) = char( ichar(buffer(i:i)) else implicit none
type student
write(*,\ stop end
end do total
write(*,*) TRIM(),\
end if
3.program main subjects=5 students
integer chinese, english, math, science,
end type type(student) :: s, total integer, parameter :: students=20, write(*,\
do i=1,
integer i
open(10,file=\
\座号 \中文 \英文 \数学 \自然 \社会 \总分 \
read(10,rec=(i -1)*subjects+1)
s%english s%science
total = student(0,0,0,0,0,0)
s%chinese read(10,rec=(i -1)*subjects+2) read(10,rec=(i -1)*subjects+4) s%social
read(10,rec=(i -1)*subjects+3) s%math
read(10,rec=(i -1)*subjects+5) s%total
=
s%chinese+s%english+s%math+s%science+s%social total%chinese = total%chinese+s%chinese total%english = total%english+s%english total%science+s%science total%total+s%total
total%math = total%math+s%math
= total%social+s%social end do
total%science = total%total
=
total%social
write(*,\
write(*,\平均 \ real(total%english)/real(students),& real(total%science)/real(students),&
real(total%chinese)/real(students),& real(total%math)/real(students),& real(total%social)/real(students),& 4.program main \
real(total%total)/real(students)
::
integer :: status = 0
stop ::
end buffer
implicit none character(len=79) character(len=79)
logical alive
integer, parameter :: fileid = 10
read (*,\
integer i write(*,*) fmt=\
do i=1, end
inquire( , exist=alive)
if ( alive ) then
open(unit=fileid, , &
access=\ status=\ iostat=status ) buffer len_trim(buffer) write(*,\ stop end
do while(.true.)
) exit
read(unit=fileid,
if ( status/=0 end do
! 没有数据就跳出循环
buffer(i:i) = char( ichar(buffer(i:i)) -(mod(i -1,3)+1)
)
do
buffer
else
write(*,*) TRIM(),\
exist.\ end if
5.module typedef Natural, Social typedef total
type student integer :: num
integer :: Chinese, English, Math,
program main
integer :: total
:: tempstr
integer :: rank end type end module use
implicit none integer, parameter :: integer, parameter :: students=20
type(student) ::
open(fileid,
character(len=80)
type(student) :: s(students) ! 储存学生成绩
! 计 算 平 均 分 数 用 integer i, num, error
Fortran95程序设计课后习题答案(word版方便).docx



