fortran语言程序设计.docx
《fortran语言程序设计.docx》由会员分享,可在线阅读,更多相关《fortran语言程序设计.docx(21页珍藏版)》请在冰豆网上搜索。
fortran语言程序设计
《FORTRAN语言》实验(上机)报告
班级·学号1333107.1133310723姓名郑珏辉实验日期12月19日任课教师
实验名称
实验一顺序结构程序设计
验证型
一、实验目的
(1)熟悉FortranPowerStation4.0的集成开发环境和上机步骤;
(2)掌握源程序的书写格式;
(3)掌握FORTRAN90中基本数据类型及其描述、运算;
(4)掌握基本语句的使用。
二、实验内容:
(1)编写程序,将华氏温度转化为摄氏温度,公式为:
。
要求:
输入一个华氏温度值F,按照公式将其转化为摄氏温度值C。
(2)编写程序,其功能是:
输入a,b,x的值,计算并输出y的值。
当x=1.234,a=-5,b=0.9876时,y=9.376444E-03。
三、实验平台
FortranPowerStation4.0
四、程序清单
programmain_1
implicitnone
real:
:
F,C
read*,F
C=5*(F-32)/9
print*,"C=",C
end
programmain_2
implicitnone
real:
:
a,b,x,y
print*,"输入x,a,b:
"
read*,x,a,b
y=(exp(a*x)+log(x)*log(x))/(5*b)
print*,"y=",y
end
五、调试和测试结果
六、教师批语与成绩评定:
年月日
《FORTRAN语言》实验(上机)报告
班级·学号1333107.1133310723姓名郑珏辉实验日期12月19日任课教师
实验名称
实验二选择结构程序设计
验证型
一、实验目的
(1)掌握逻辑表达式的书写方法和逻辑型数据的使用;
(2)学会正确使用逻辑运算符和逻辑表达式;
(3)掌握块IF结构、块CASE结构、逻辑IF语句和算术IF语句。
二、实验内容:
(1)编写程序,输入年、月,求该月的天数。
用year、month分别表示年、月,day表示每月的天数。
注意:
①每年的1,3,5,7,8,10,12月,每月31天;4,6,9,11月每月30天;2月闰年为29天,平年为28天。
②年份能被4整除,但不能被100整除,或者能被400整除的年均为闰年。
(2)编写程序,输入一个自然数,若为奇数则输出其平方根,否则输出其立方根。
三、实验平台
FortranPowerStation4.0
四、程序清单
programmain_3
implicitnone
integer:
:
year,month,day
print*,"请输入年,月"
read*,year,month
if(month==1.or.month==3.or.month==5.or.month==7.or.month==8.or.month==10.or.month==12)then
print*,"本月有31天"
elseif(month==4.or.month==6.or.month==9.or.month==11)then
print*,"本月有30天"
elseif(month==2)then
if(mod(year,4)==0.and.mod(year,100)/=0.or.mod(year,400)==0)then
print*,"本月有29天"
else
print*,"本月有28天"
endif
elseif(month/=(1,12))then
print*,"输入错误"
endif
end
programmain_4
implicitnone
integer:
:
a
real:
:
b
print*,"请输入a"
read*,a
if(mod(a,2)==1)then
b=a**0.5
else
b=a**0.3333333
endif
print*,b
end
五、调试和测试结果
六、教师批语与成绩评定:
年月日
《FORTRAN语言》实验(上机)报告
班级·学号13331071133310723姓名郑珏辉实验日期12.26任课教师
实验名称
实验三循环结构程序设计
操作型
一、实验目的
(1)掌握用DO语句和DOWHILE语句实现循环的方法;
(2)掌握循环结构的实现方法;
(3)掌握循环嵌套的执行过程。
二、实验内容:
(1)编写程序,求100~1000之间的所有素数,要求输出这些素数的个数和平均值。
(2)编写程序,
,其中
。
当m=10时,Y的值是多少?
三、实验平台
FortranPowerStation4.0
四、程序清单
Programmain_5
implicitnone
integer:
:
i,j,n=0,s=0
real:
:
a=0.0
doI=100,1000
doj=2,SQRT(REAL(i))
if(mod(i,j)==0)EXIT
enddo
if(j>SQRT(REAL(i)))then
n=n+1
s=s+i
endif
enddo
a=real(s)/real(n)
print*,"素数的个数有",n,"个","平均值为",a
end
Programmain_6
implicitnone
integer:
:
i,n,s,y,m,t=0
print*,"请输入m"
read*,m
don=1,m
t=0
doi=1,n
IF(mod(n,2)==0)then
s=2*n
else
s=n*n
endif
t=i+t
enddo
y=y+s+t
enddo
print*,"y=",y
end
五、调试和测试结果
六、教师批语与成绩评定:
年月日
《FORTRAN语言》实验(上机)报告
班级·学号13331071133310723姓名郑珏辉实验日期12.30任课教师
实验名称
实验四字符型数据程序设计
操作型
一、实验目的
(1)掌握字符型、双精度型常量变量的表示方法及其运算;
(2)掌握字符型数据的输入输出格式及数据类型之间的转换和运算规则。
二、实验内容:
(1)编写程序:
输入一个字符,若为小写字母,则输出其大写字母;若为大写字母,则输出其小写字母;若为数字,则原样输出该数字字符;否则,输出*。
(2)编写程序,用双精度数据计算:
,直到第n项的绝对值小于
为止。
三、实验平台
FortranPowerStation4.0
四、程序清单
programmain_9
implicitnone
character:
:
a,b
print*,"请输入字符a"
read*,a
if(ichar(a)<48)then
print*,"*"
elseif(ichar(a)<=59)then
print*,a
elseif(ichar(a)<=90)then
b=char(ichar(a)+32)
print*,b
else
b=char(ichar(a)-32)
print*,b
endif
end
programmain_10
implicitnone
integer:
:
i,j,k
real(kind=8):
:
x,a,b
a=0
b=1
print*,'请输入'
read*,x
doi=1,100
doj=1,2*i
k=1
k=k*j
enddo
a=(-1)**i*x**(2*i)/k
if(abs(a)>=10**(-15))then
b=b+a
endif
enddo
print*,b
end
五、调试和测试结果
六、教师批语与成绩评定:
年月日
《FORTRAN语言》实验(上机)报告
班级·学号13331071133310723姓名郑珏辉实验日期12.26任课教师
实验名称
实验五数组操作
操作型
一、实验目的
(1)掌握数组的定义及赋值和输入输出的方法;
(2)熟悉数组在内存中的存储顺序(按列存储);
(3)掌握数组赋初值的方法;
(4)掌握与数组有关的算法。
二、实验内容:
(1)编写程序,利用冒泡排序法把输入的一列无序的数据按由小到大的顺序排列。
(2)编写程序,其功能是:
计算给定的20个数据与平均值之差的绝对值之和。
DEMENSIONA(20)
DATAA/3.5,1.5,-2.5,4.5,2.5,3.0,5.5,-6.5,3.5,2.5,&
1.5,2.5,4.5,-3.0,2.6,3.4,6.3,-3.8,5.2,-1.6/
三、实验平台
FortranPowerStation4.0
四、程序清单
programmain_7
implicitnone
integer:
:
i,j,m,n
integer,dimension(:
),allocatable:
:
A
print*,"请输入数组中数的个数"
read*,n
allocate(A(1:
n))
print*,"请输入数组"
read*,A
doi=1,n-1
doj=i+1,n
if(A(i)>A(j))then
m=A(j)
A(j)=A(i)
A(i)=m
endif
enddo
enddo
print*,A
deallocate(A)
end
programmain_8
implicitnone
integer:
:
i,j
real:
:
s=0,b,c
real,dimension(20):
:
A
A=(/3.5,1.5,-2.5,4.5,2.5,3.0,5.5,-6.5,3.5,2.5,1.5,2.5,4.5,-3.0,2.6,3.4,6.3,-3.8,5.2,-1.6/)
doi=1,20
s=s+A(i)
enddo
b=s/20
doj=1,20
c=c+abs(A(j)-b)
enddo
print*,c
end
五、调试和测试结果
六、教师批语与成绩评定:
年月日
《FORTRAN语言》实验(上机)报告
班级·学号13331071133310723姓名郑珏辉实验日期12.30任课教师
实验名称
实验六子程序程序设计
操作型
一、实验目的
(1)掌握语句函数的定义及引用方法、函数子程序和子例行子程序的结构和调用方法;
(2)掌握FORTRAN程序单元间的数据传递方法。
二、实验内容:
(1)若Fibonacci数列的第n项记为fib(a,b,n),则有下列的递归定义:
fib(a,b,1)=a
fib(a,b,2)=b
fib(a,b,n)=fib(b,a+b,n-1)(n>2)
用递归方法求5000之内最大的一项。
(2)设
,编写程序求sh
(2)-sh(3)。
(3)编写求阶乘及累加和的函数,调用函数求:
当m=10时,S=4038133。
三、实验平台
FortranPowerStation4.0
四、程序清单
1.recursivefunctionfib(a,b,n)result(fi)
selectcase(n)
case
(1)
fi=a
case
(2)
fi=b
case(3:
)
fi=fib(b,a+b,n-1)
endselect
end
programfib_pro
real:
:
a,b,maxfib=0
integer:
:
k,num=0
read*,a,b
write(*,*)(fib(a,b,k),k=1,20)
dok=1,20
if(fib(a,b,k)<=5000.and.fib(a,b,k)>maxfib)then
maxfib=fib(a,b,k)
num=k
endif
enddo
print*,'5000之内最大的一项是第',num,',其值是:
',maxfib
end
2.functionsh(x)result(sh_result)
implicitnone
real:
:
x,sh_result
sh_result=(exp(x)-exp(-x))/2
end
programmain_11
implicitnone
realt,sh
t=sh(2.0)-sh(3.0)
print*,t
end
3.functions(n)result(s_result)
implicitnone
integer:
:
i,n,t,q,s_result
t=1
q=0
doi=1,n
t=t*i
q=q+i
enddo
s_result=t+q
end
programmain_12
implicitnone
integer:
:
m,s,j,l=0
read*,m
doj=1,m
l=l+s(j)
enddo
print*,l
end
五、调试和测试结果
1.
六、教师批语与成绩评定:
年月日
《FORTRAN语言》实验(上机)报告
班级·学号姓名实验日期任课教师
实验名称
实验七派生类型和指针程序设计
操作型
一、实验目的
(1)掌握结构体的概念、定义、格式及引用和初始化方法;
(2)掌握结构体数组的定义;
(3)掌握指针的概念、定义格式和使用;
(4)理解动态变量的含义。
二、实验内容:
1、有以下程序:
IMPLICITNONE
TYPEperson
CHARACTERname*8
REALsalary
REALaward
REALcost
ENDTYPE
INTEGERI,J,NUM
PARAMETER(NUM=10)
TYPE(person),DIMENSION(NUM):
:
clerk
DOi=1,NUM
READ*,clerk(i).name,clerk(i).salary,clerk(i).award,clerk(i).cost
ENDDO
DOJ=1,NUM
IF(clerk(j).salary+clerk(j).award–clerk(j).cost>=1200)THEN
PRINT*,clerk(j).name,clerk(j).salary,clerk(j).award,clerk(j).cost
ENDIF
ENDDO
END
运行程序,输入以下数据:
“Lister”,876,451,123
“Angel”,746,523,23
“Billy”,912,551,243
“Henry”,926,660,314
“Ervine”,676,481,103
“Ford”,816,351,89
“George”,936,451,145
“Mailer”,766,480,98
“Philip”,880,560,168
“Victor”,660,440,86
输出结果为:
。
2、以下程序用于在屏幕上输出如下图形:
1
21
321
4321
54321
IMPLICITNONE
INTEGER,POINTER:
:
p(:
)
INTEGER,TARGET:
:
X(5,5)
INTEGERi
x=0
DOi=1,5
p=>x(1:
i,1)
p=p+1
PRINT*,p
ENDDO
END
请将程序略作修改,用于输出下列图形:
(1)
(2)
111111
222222
333333
444444
555555
三、实验平台
FortranPowerStation4.0
四、程序清单及运行结果
要求:
第1题写出运行结果,第2题写出程序清单。
五、教师批语与成绩评定:
年月日
《FORTRAN语言》实验(上机)报告
班级·学号姓名实验日期任课教师
实验名称
实验八文件操作
操作型
一、实验目的
(1)掌握文件与记录的概念;
(2)掌握文件的打开和关闭;
(3)掌握文件的存取方法。
二、实验内容:
(1)编写程序:
从键盘输入若干字符串,并把这些字符串存放到文件FILE1.TXT中。
(2)编写程序,读出当前文件夹下文件README.TXT的内容,显示在屏幕上。
三、实验平台
FortranPowerStation4.0
四、程序清单
五、调试和测试结果
六、教师批语与成绩评定:
年月日
《FORTRAN语言》实验(上机)报告
班级·学号姓名实验日期任课教师
实验名称
实验九综合程序设计
综合型
一、实验目的
综合运用所学知识,掌握利用FORTRAN语言解决实际问题的方法。
二、实验内容:
1、编写程序:
输入30名学生一门课的考试成绩,以0~9分,10~19分,…90~99分,100分为分数段,统计各分数段的人数。
2、用迭代法求一非线性方程x-1+sinx=0在1.0附近的一个实根,精度要求为10-5。
迭代格式为:
xn+1=1-sinxn。
如果迭代10次不收敛,则终止运行。
三、实验平台
FortranPowerStation4.0
四、程序清单
五、调试和测试结果
六、教师批语与成绩评定:
年月日