FORTRAN95程序的设计实验.docx
《FORTRAN95程序的设计实验.docx》由会员分享,可在线阅读,更多相关《FORTRAN95程序的设计实验.docx(21页珍藏版)》请在冰豆网上搜索。
FORTRAN95程序的设计实验
Fortran95
程序设计实验
班级:
核工11
姓名:
薛院院
学号:
2110302026
实验一
一.实验内容
一个边长为8.5m的边形草地。
计算八边形草地的面积并输出。
二.问题分析(流程图)
三.程序
!
核工程11
!
薛院院
!
2013.03.11
!
计算8边形的面积
PROGRAMCOLUMATE
REAL(4)A!
定义边长
REAL(8)B,P
INTEGER
(1)NUMBER!
定义边数
REAL(8)AREAL!
定义面积
PRINT*,'请输入多边形的边数'
READ*,NUMBER
PRINT*,'请输入多边形的边长'
READ*,A
B=A/2/sin(3.14/NUMBER)
P=A/2+B
AREAL=SQRT(P*(P-A)*(P-B)**2)
PRINT*,'该多边形的面积为:
',AREAL
END
!
输入边数8;输入边长8.5
!
输出结果:
43.631297090078
四.实验结果
实验二
一.实验内容
计算还清贷款的月算
二.问题分析
输出M1
三.程序
!
核工程11
!
薛院院
!
2013.03.11
!
计算还清贷款的月数
!
PROGRAMCALUCATE
REALP,D,R,M
INTEGERM1
PRINT*,'请分别输入贷款月利息贷款数以及每月尝还数'
READ*,P,D,R
A=LOG10(1.0)
PRINT*,A
M=(LOG10(P)-LOG10(P-D*R))/LOG10(1+R)
M1=INT(M+0.5)
PRINT*,M1
END
四.实验结果
实验三
一.实验内容
用case结构和seclect语句实现税值计算
二.问题分析(流程图)
开始
输入企业产量
用case语句计算缴纳的税值
输出缴纳的总税值
结束
三.程序
!
核工11
!
薛院院
!
2110302026
!
计算应该缴纳的税
programcalucate_money
integerincome
real:
:
income_rate
real:
:
rate_1=0.03,rate_2=0.05,rate_3=0.07,rate_4=0.10,rate_5=0.14,rate_6=0.20
print*,'请输入收入(以万为单位):
'
read*,income
selectcase(income)
case(0:
1000)
income_rate=income*rate_1
print*,'缴纳的税为:
',income_rate
case(1001:
2000)
income_rate=income*rate_2
print*,'缴纳的税为:
',income_rate
case(2001:
5000)
income_rate=income*rate_3
print*,'缴纳的税为:
',income_rate
case(5001:
10000)
income_rate=income*rate_4
print*,'缴纳的税为:
',income_rate
case(10001:
50000)
income_rate=income*rate_5
print*,'缴纳的税为:
',income_rate
casedefault
income_rate=income*rate_6
print*,'缴纳的税为:
',income_rate
endselect
end
四.实验结果
实验四
一.实验内容
计算
+
-
……+
,其中n满足1+
二.问题分析(流程图)
开始
输入
用case语句计算缴纳的税值
输出缴纳的总税值
结束
三.程序
!
班级:
核工11
!
姓名:
薛院院
!
日期:
4.8
!
计算级数之和
programmain
real:
:
sum=1,term,sign=1,s=0
integer:
:
a,i,n=0
print*,'请输入一个较大的数(如10000)'
read*,a
dowhile(s<=a)
n=n+1
s=s+n**2
enddo
doi=1,n
sign=-1*sign
term=sign/i
sum=sum-term
enddo
print*,sum
end
四.实验结果
实验五
一.实验内容
计算学生的平均成绩,每门课的平均成绩,三门课的平均成绩以及统计高于每门课的成绩和三门平均成绩的学生人数和占总人数的比例
二.问题分析(流程图)
开始
输入学生人数
输入每个人学生的学号,三门成绩
计算每个学生的平均成绩
计算每门课平均成绩
统计高于每门课平均成绩和三门课平均成绩的人数及比例
计算3门课平均成绩
结束
输出上述计算值
三.程序
!
班级:
核工程11
!
姓名:
薛院院
!
学号:
2110302026
!
统计人数及比例
programmain
parameter(max=5)
character*5:
:
number(max)
integer,dimension(3):
:
english,math,physics
real:
:
averages(max),english_ave,math_ave,physics_ave,average
real:
:
sum1=0,sum2=0,sum3=0
integer
(1):
:
n,n1=0,n2=0,n3=0,nn=0
real:
:
p1,p2,p3,pp
print*,'请输入学生人数'
read*,n
print*,'请输入',n,'名学生的学号、英语、数学、物理成绩'
print*,'数据之间用空格间隔。
学号为长度为5的字符串,用引号括住'
doi=1,n
read*,number(i),english(i),math(i),physics(i)
averages(i)=(english(i)+math(i)+physics(i))/3.0
sum1=sum1+english(i)
sum2=sum2+math(i)
sum3=sum3+physics(i)
enddo
english_ave=sum1*1.0/n
math_ave=sum2*1.0/n
physics_ave=sum3*1.0/n
average=(english_ave+math_ave+physics_ave)/3.0
doi=1,n
if(english(i)>english_ave)n1=n1+1
if(math(i)>math_ave)n2=n2+1
if(physics(i)>physics_ave)n3=n3+1
if(averages(i)>average)nn=nn+1
enddo
p1=real(n1)/n
p2=real(n2)/n
p3=real(n3)/n
pp=real(nn)/n
write(*,100)'英语',n1,p1*100
write(*,100)'数学',n2,p2*100
write(*,100)'物理',n3,p3*100
write(*,100)'三门课',nn,pp*100
100format(1x,'高于',a,'平均成绩的学生人数有',i2,'人,占总人数比例',f8.2,'%')
end
四.实验结果
实验六
一.实验内容
输入4个整数放在4个数组中,数组向左循环位移1,2,3,4个位置,第一个元素移动到最后一个元素,结果放在数组中,输出移除前后的4个整数。
二.问题分析(流程图)
开始
输入4个整数
对数组进行处理
结束
输出处理后的数组
三.程序
!
班级:
核工程11
!
名字:
薛院院
!
日期:
4.2
programmain
parameter(n=4)
integer:
:
x(n)
print*,'请输入',n,'个整数'
doi=1,n
read*,x(i)
enddo
print100,x
doi=1,n
t=x
(1)
doj=2,n
x(j-1)=x(j)
enddo
x(n)=t
print100,x
enddo
100format(4i2)
end
四.实验结果
实验七
一.实验内容
用牛顿迭代法求解方程
在x=1.5附近的值
二.问题分析(流程图)
开始
输入学生人数
输入每个人学生的学号,三门成绩
计算每个学生的平均成绩
计算每门课平均成绩
统计高于每门课平均成绩和三门课平均成绩的人数及比例
计算3门课平均成绩
结束
输出上述计算值
三.程序
!
班级:
核工11
!
姓名:
薛院院
!
学号:
2110302026
!
日期:
4.8
programmain
parameter(max=1000)
realx(max)
i=1
x
(1)=1.5
doi=1,1000
j=i+1
if(abs(x(j)-x(i))>10e-7)then
x(j)=x(i)-f(x(i))/f1(x(i))
endif
enddo
print*,'计算的该数值为:
x=',x(j)
end
四.实验结果
实验八
一.实验内容
对一组数字进行处理
二.问题分析(流程图)
开始
输入一批数
对数字进行排序
统计奇数个数
统计偶数个数
删除相同的整数
输出奇偶数个数
输出这批数
统计奇数个数
结束
统计偶数个数
输出数组及奇偶数
三.程序
!
班级:
核工11
!
姓名:
薛院院
!
学号:
2110302026
!
日期:
2013.4.7
!
主程序
programmain
parameter(max=50)
integera(max),n,n1,n2
callinput(a,n)
callsort(a,n)
n1=odd(a,n)
n2=even(a,n)
print*,'这批整数'
calloutput(a,n)
print*,'这批整数的奇数个数为:
',n1
print*,'这批整数的偶数个数为:
',n2
calldele(a,n)
n1=odd(a,n)
n2=even(a,n)
print*,'剩余整数'
calloutput(a,n)
print*,'剩余整数奇数个数',n1
print*,'剩余整数偶数个数',n2
contains
subroutineinput(a,n)
integera(max),n
print'(a\)','请输入这批整数个数n:
'
read*,n
print'(a,i2,a)','请输入',n,'个整数:
'
read*,(a(i),i=1,n)
endsubroutine
!
数据输出子程序
subroutineoutput(a,n)
integera(n),n
print*,a
endsubroutine
!
整数排序子程序
subroutinesort(a,n)
integera(n),n
integer:
:
i,j,m,t
doi=1,n
m=i
doj=i+1,n
if(a(j)m=j
endif
enddo
if(i/=m)then
t=a(i)
a(i)=a(m)
a(m)=t
endif
enddo
endsubroutine
subroutinedele(a,n)
integera(n),n,i,j
i=1
dowhile(ij=i+1
dowhile(j<=n)
if(a(i)==a(j))then
dok=j+1,n
a(k-1)=a(k)
enddo
n=n-1
else
j=j+1
endif
enddo
i=i+1
enddo
endsubroutine
!
统计奇函数
functionodd(a,n)
integera(n),n,odd,oddl
oddl=0
doi=1,n
if(mod(a(i),2)==1)oddl=oddl+1
enddo
odd=oddl
endfunction
!
统计偶函数
functioneven(a,n)
integera(n),n,oddl,even
oddl=0
doi=1,n
if(mod(a(i),2)==0)oddl=oddl+1
enddo
even=oddl
endfunction
end
四.实验结果