fortran语言程序设计文档格式.docx
《fortran语言程序设计文档格式.docx》由会员分享,可在线阅读,更多相关《fortran语言程序设计文档格式.docx(21页珍藏版)》请在冰豆网上搜索。
![fortran语言程序设计文档格式.docx](https://file1.bdocx.com/fileroot1/2023-2/5/09eab017-8a92-4396-a723-febda94d1449/09eab017-8a92-4396-a723-febda94d14491.gif)
programmain_2
real:
a,b,x,y
print*,"
输入x,a,b:
"
read*,x,a,b
y=(exp(a*x)+log(x)*log(x))/(5*b)
y="
y
end
五、调试和测试结果
六、教师批语与成绩评定:
年月日
学号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)编写程序,输入一个自然数,若为奇数则输出其平方根,否则输出其立方根。
programmain_3
implicitnone
integer:
year,month,day
请输入年,月"
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
本月有31天"
elseif(month==4.or.month==6.or.month==9.or.month==11)then
本月有30天"
elseif(month==2)then
if(mod(year,4)==0.and.mod(year,100)/=0.or.mod(year,400)==0)then
本月有29天"
else
本月有28天"
endif
elseif(month/=(1,12))then
输入错误"
endif
end
programmain_4
a
b
请输入a"
read*,a
if(mod(a,2)==1)then
b=a**0.5
else
b=a**0.3333333
print*,b
学号13331071133310723姓名郑珏辉实验日期12.26任课教师
实验三循环结构程序设计
操作型
(1)掌握用DO语句和DOWHILE语句实现循环的方法;
(2)掌握循环结构的实现方法;
(3)掌握循环嵌套的执行过程。
(1)编写程序,求100~1000之间的所有素数,要求输出这些素数的个数和平均值。
(2)编写程序,
,其中
当m=10时,Y的值是多少?
Programmain_5
implicitnone
i,j,n=0,s=0
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
a=real(s)/real(n)
素数的个数有"
n,"
个"
"
平均值为"
a
Programmain_6
implicitnone
i,n,s,y,m,t=0
请输入m"
read*,m
don=1,m
t=0
doi=1,n
IF(mod(n,2)==0)then
s=2*n
s=n*n
endif
t=i+t
y=y+s+t
学号13331071133310723姓名郑珏辉实验日期12.30任课教师
实验四字符型数据程序设计
(1)掌握字符型、双精度型常量变量的表示方法及其运算;
(2)掌握字符型数据的输入输出格式及数据类型之间的转换和运算规则。
(1)编写程序:
输入一个字符,若为小写字母,则输出其大写字母;
若为大写字母,则输出其小写字母;
若为数字,则原样输出该数字字符;
否则,输出*。
(2)编写程序,用双精度数据计算:
,直到第n项的绝对值小于
为止。
programmain_9
character:
a,b
请输入字符a"
if(ichar(a)<
48)then
*"
elseif(ichar(a)<
=59)then
print*,a
=90)then
b=char(ichar(a)+32)
b=char(ichar(a)-32)
programmain_10
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
a=(-1)**i*x**(2*i)/k
if(abs(a)>
=10**(-15))then
b=b+a
学号13331071133310723姓名郑珏辉实验日期12.26任课教师
实验五数组操作
(1)掌握数组的定义及赋值和输入输出的方法;
(2)熟悉数组在内存中的存储顺序(按列存储);
(3)掌握数组赋初值的方法;
(4)掌握与数组有关的算法。
(1)编写程序,利用冒泡排序法把输入的一列无序的数据按由小到大的顺序排列。
计算给定的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/
programmain_7
i,j,m,n
integer,dimension(:
),allocatable:
A
请输入数组中数的个数"
read*,n
allocate(A(1:
n))
请输入数组"
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
print*,A
deallocate(A)
programmain_8
i,j
s=0,b,c
real,dimension(20):
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)
b=s/20
doj=1,20
c=c+abs(A(j)-b)
print*,c
实验六子程序程序设计
(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。
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
programfib_pro
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
2.functionsh(x)result(sh_result)
x,sh_result
sh_result=(exp(x)-exp(-x))/2
programmain_11
realt,sh
t=sh(2.0)-sh(3.0)
print*,t
3.functions(n)result(s_result)
i,n,t,q,s_result
t=1
q=0
t=t*i
q=q+i
enddo
s_result=t+q
programmain_12
m,s,j,l=0
doj=1,m
l=l+s(j)
print*,l
1.
学号姓名实验日期任课教师
实验七派生类型和指针程序设计
(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
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
INTEGER,POINTER:
:
p(:
INTEGER,TARGET:
X(5,5)
INTEGERi
x=0
DOi=1,5
p=>
x(1:
i,1)
p=p+1
PRINT*,p
请将程序略作修改,用于输出下列图形:
(1)
(2)
111111
222222
333333
444444
555555
四、程序清单及运行结果
第1题写出运行结果,第2题写出程序清单。
五、教师批语与成绩评定:
年月日
实验八文件操作
(1)掌握文件与记录的概念;
(2)掌握文件的打开和关闭;
(3)掌握文件的存取方法。
从键盘输入若干字符串,并把这些字符串存放到文件FILE1.TXT中。
(2)编写程序,读出当前文件夹下文件README.TXT的内容,显示在屏幕上。
实验九综合程序设计
综合型
综合运用所学知识,掌握利用FORTRAN语言解决实际问题的方法。
1、编写程序:
输入30名学生一门课的考试成绩,以0~9分,10~19分,…90~99分,100分为分数段,统计各分数段的人数。
2、用迭代法求一非线性方程x-1+sinx=0在1.0附近的一个实根,精度要求为10-5。
迭代格式为:
xn+1=1-sinxn。
如果迭代10次不收敛,则终止运行。