Fortran95程序设计实验报告50c5j.docx
《Fortran95程序设计实验报告50c5j.docx》由会员分享,可在线阅读,更多相关《Fortran95程序设计实验报告50c5j.docx(29页珍藏版)》请在冰豆网上搜索。
![Fortran95程序设计实验报告50c5j.docx](https://file1.bdocx.com/fileroot1/2023-2/3/4f87cf29-f0a1-437f-a5e7-5ca802583d7d/4f87cf29-f0a1-437f-a5e7-5ca802583d7d1.gif)
Fortran95程序设计实验报告50c5j
Fortran95程序设计实验报告50c52014j
学号:
20154244000姓名:
ABC日期:
2017/4/21上机考试教师:
吴兴征实验地点:
B3-216成绩:
测试题目1
编程,求1-100之间能被6整除的整数,请将这些整数保存到一维动态数组中,最后请输出这些整数(被6整除的整数)的个数及这些整数的和,并将这些整数(被6整除的整数)输出到文件中(TestIntegersMod06.txt)。
实验目的(一句话)
编写程序,按指定要求输出
实验要求
实验代码
PROGRAMTEST01
!
IMPLICITNONE
INTEGER:
:
N,S!
NsavenumberSsaveforsumm
INTEGER:
:
I
integer,dimension(:
),allocatable:
:
num
Character*21:
:
FILENAME
FILENAME='TestIntegersMod06.txt'
OPEN(UNIT=1,FILE=FILENAME,STATUS='unknown')
!
findthenumberN
S=0;N=0
DOI=1,100
If(MOD(I,6)==0)THEN
N=N+1
S=S+I
ENDIF
ENDDO
!
definethedatanum
allocate(num(N))
N=0
DOI=1,100
If(MOD(I,6)==0)THEN
N=N+1
num(N)=I
WRITE(1,"(1X,'Integer=',I4)")I
ENDIF
ENDDO
!
PRINT*,N,S
WRITE(1,"(1X,'Numberofintergers=',I4,3X,'Sum=',I6)")N,S
end
实验结果考屏
学号:
20154244000姓名:
ABC日期:
2017/4/21上机考试教师:
吴兴征实验地点:
B3-216成绩:
测试题目2
任意输入12个实数,请编写程序用于统计每个正数(Positive)和负数(Negative)的个数,分别将请将这些实数保存到一维动态数组中。
并将这些实数输出到文件中(TestReals02.txt)。
实验目的(一句话)
编写程序,按指定要求输出
实验要求
实验代码
programTest02
implicitnone
integer:
:
num(12),i,Num_P,Num_N,n
integer,dimension(:
),allocatable:
:
numPositive,numNegative
Num_P=0
Num_N=0
n=12
!
inputandoutput
print*,'pleaseinput',n,'integers'
open(1,file='TestReals02.txt',status='unknown')
doi=1,n
read*,num(i)
enddo
!
doi=1,n
write(1,'(1x,12I4)')(num(i),i=1,12)
!
enddo
close
(1)
!
loopforallintegers
doi=1,n
if(num(i)>0)then
Num_P=Num_P+1
elseif(num(i)<0)then
Num_N=Num_N+1
endif
enddo
print*,'Positivesarethenumberof:
',Num_P
print*,'Negativesarethenumberof:
',Num_N
!
usingallocatabledata
allocate(numPositive(Num_P))
allocate(numNegative(Num_N))
Num_P=0
Num_N=0
doi=1,n
if(num(i)>0)then
Num_P=Num_P+1
numPositive(Num_P)=num(i)
elseif(num(i)<0)then
Num_N=Num_N+1
numNegative(Num_N)=num(i)
endif
enddo
print*,(numPositive(i),i=1,Num_P)
print*,(numNegative(i),i=1,Num_N)
end
实验结果考屏
学号:
20154244000姓名:
ABC日期:
2017/4/21上机考试教师:
吴兴征实验地点:
B3-216成绩:
测试题目3
已知,
,请编写程序,推求
和
,并将它们分别写入一维动态数组中,并将它们分别输出到文件中(TestSinA03.txt和TestCosB03.txt)。
实验目的(一句话)
编写程序,按指定要求输出
实验要求
实验代码
programTest03
parameter(pi=3.1415926)
integeri,num_sc
real:
:
x,sinx,cosx,a,b
real,dimension(:
),allocatable:
:
sin22,cos22
open(1,file='TextSinA03.txt')
open(2,file='TextCosB03.txt')
num_sc=0
doi=0,360,20
x=i/180.0*pi
a=(sin(x))**2
b=(cos(x))**2
write(1,"('Degreeis',i5,2X,'(sin(x))**2valueisgivenas:
',F5.3)")i,a
write(2,"('Degreeis',i5,2X,'(cos(x))**2valueisgivenas:
',F5.3)")i,b
num_sc=num_sc+1
enddo
close
(1)
close
(2)
!
definetheallocatabledataandsettheirvalues
allocate(sin22(num_sc))
allocate(cos22(num_sc))
num_sc=0
doi=0,360,20
x=i/180.0*pi
num_sc=num_sc+1
sin22(num_sc)=(sin(x))**2
cos22(num_sc)=(cos(x))**2
print*,i,x,sin22(num_sc),cos22(num_sc)
enddo
end
实验结果考屏
学号:
20154244000姓名:
ABC日期:
2017/4/21上机考试教师:
吴兴征实验地点:
B3-216成绩:
测试题目4
输入
值(
),按
,精度要求五位有效数字,最后一项小于
,请编写程序并将这些项(
)写入一维动态数组中,最终输出到文件中(TestTerms04.txt),并在屏幕上打印输出,
和
的值。
实验目的(一句话)
编写程序,按指定要求输出
实验要求
实验代码
programmain
integer:
:
n
real:
:
xx,QQ,Term,eps=1E-5
real,dimension(:
),allocatable:
:
Termss
n=1
print'(A/)','Inputasmallvalueofx(absolutevalueislessthan1)=='
read*,xx
Term=xx
QQ=Term
dowhile(abs(Term)>=eps)
n=n+1
Term=xx**n/n
QQ=QQ+Term
enddo
print*,'Qis',QQ,'numberoftermsis',n
!
writethesetermsintoanallocatabledataarray
allocate(Termss(n))
n=0!
zero
Term=xx
QQ=Term
dowhile(abs(Term)>=eps)
n=n+1
Term=xx**n/n
QQ=QQ+Term
Termss(n)=Term
print*,n,Term,Termss(n)
enddo
end
实验结果考屏
学号:
20154244000姓名:
ABC日期:
2017/4/21上机考试教师:
吴兴征实验地点:
B3-216成绩:
测试题目5
对两个同阶矩阵(
行
列,使用动态数组)进行相加,编写程序,并将这些
和
的两个测试矩阵(ARR1和ARR2)之和输出到文件中(TestArrays05.txt)。
测试矩阵ARR1=
测试矩阵ARR2=
实验目的(一句话)
编写程序,按指定要求输出
实验要求
实验代码
PROGRAMTest05
real,DIMENSION(:
:
),ALLOCATABLE:
:
Arr1,Brr2,Crr3
INTEGER:
:
S=2,T=3
ALLOCATE(Arr1(S,T),Brr2(S,T),Crr3(S,T))
PRINT*,'InputdataofArr1andBrr2!
'
!
DOi=1,S
!
READ*,(Arr1(i,j),j=1,T)
!
ENDDO
Arr1(1,1)=1.5;Arr1(1,2)=2.8;Arr1(1,3)=3.6
Arr1(2,1)=12.7;Arr1(2,2)=1.2;Arr1(2,3)=8.4
!
DOi=1,S
!
READ*,(Brr2(i,j),j=1,T)
!
ENDDO
Brr2(1,1)=2.5;Brr2(1,2)=2.2;Brr2(1,3)=3.4
Brr2(2,1)=12.3;Brr2(2,2)=1.8;Brr2(2,3)=8.6
DOi=1,S
DOj=1,T
Crr3(i,j)=Arr1(i,j)+Brr2(i,j)
ENDDO
ENDDO
PRINT*,'OutputsummationofArr1andBrr2!
'
OPEN(2,FILE='TestArrays05.txt',status='unknown')
DOi=1,S
write(2,*)(Crr3(i,j),j=1,T)
print*,(Crr3(i,j),j=1,T)
ENDDO
END
实验结果考屏
学号:
20154244000姓名:
ABC日期:
2017/4/21上机考试教师:
吴兴征实验地点:
B3-216成绩:
测试题目6
下面程序的功能是从键盘上输入一个角度X,按下述关系,计算表达式Y的值:
当X小于10度时,Y=
当10大于等于小于30度时,Y=
当30大于等于X小于45度时,Y=
请给出测试结果并拷屏输出。
实验目的(一句话)
编写程序,按指定要求输出
实验要求
实验代码
programTest06
parameter(pi=3.1415926)
realx,y
print*,'pleaseinputxvalue(indegree):
'
read*,x
if(x<10)then
y=sin(abs(x*pi/180.0))
elseif(x>=10.and.x<30)then
y=cos(x*pi/180.0)/2
elseif(x>=30.and.x<45)then
y=5*tan(sqrt(x*pi/180.0))
endif
print*,'y=',y
print*
end
实验结果考屏
学号:
20154244000姓名:
ABC日期:
2017/4/21上机考试教师:
吴兴征实验地点:
B3-216成绩:
测试题目7
下面程序的功能是从键盘上输入一个数据X,按下述关系,计算表达式Y的值:
当X>10时,Y=1
当2当-1当X<=-1时,Y=2X
请给出测试结果并拷屏输出。
实验目的(一句话)
编写程序,按指定要求输出
实验要求
实验代码
PROGRAMTest07
IMPLICITNONE
INTEGER:
:
X,Y
print*,'PleaseinputvalueofX!
'
READ*,X
IF(X>=10)THEN!
Y=1
ELSEIF(X>2)THEN
Y=X/2
ELSEIF(X>=-1)THEN!
Y=X-1
ELSE
Y=2*X!
ENDIF
PRINT*,X,Y
ENDPROGRAM
实验结果考屏
学号:
20154244000姓名:
ABC日期:
2017/4/21上机考试教师:
吴兴征实验地点:
B3-216成绩:
测试题目8
判定学生成绩的等级:
给定3名学生的考试成绩(Score),评判每个学生的成绩等级(Grade),并输出。
编写程序实现之。
成绩按以下标准评定等级:
A:
85≤S≤100;B:
60≤S<85;C:
S<60。
实验目的(一句话)
编写程序,按指定要求输出
实验要求
实验代码
programTest08
implicitnone
integerscore
charactergrade
write(*,*)"Pleaseinputascore"
read(*,*)score
if(score>=85.and.score<=100)then
grade='A'
elseif(score>=60.and.score<85)then
grade='B'
elseif(score>=0.and.score<60)then
grade='E'
else
grade='?
'
endif
write(*,"('Grade:
',A1)")grade
!
stop
end
实验结果考屏
学号:
20154244000姓名:
ABC日期:
2017/4/21上机考试教师:
吴兴征实验地点:
B3-216成绩:
测试题目9
超额累进税率,是指将应税所得额按照税法规定分解为若干段,每一段按其对应的税率计算出该段应交的税额,然后再将计算出来的各段税额相加,即为应税所得额应交纳的个人所得税。
我国最新个人所得税计算方法规定按5%至45%的九级超额累进税率计算缴纳个人所得税。
三级超额累进税率为:
1)不超过500元的部分,税率5%;
2)超过500元至2000元的部分,税率10%;
3)超过2000元的部分,税率45%。
如某人月应纳税所得额为1500元,则应纳税额为:
500*5%+1000*10%=125(元)
试编写一个个人所得税计算器。
实验目的(一句话)
编写程序,按指定要求输出
实验要求
实验代码
implicitnone
realX_shou,Y_shui
write(*,*)"PleaseinputincomeSHOURU!
"
read(*,*)X_shou
if(X_shou<=500)then
Y_shui=X_shou*5/100
elseif(X_shou>500.and.X_shou<=2000)then
Y_shui=(X_shou-500)*10/100+25
else
Y_shui=(X_shou-2000)*45/100
endif
write(*,*)"revenuetobesubmitted"
write(*,*)Y_shui
end
实验结果考屏
学号:
20154244000姓名:
ABC日期:
2017/4/21上机考试教师:
吴兴征实验地点:
B3-216成绩:
测试题目10
下面程序的功能是从键盘上输入一个角度X,按下述关系,计算表达式Y的值:
当X小于45度时,Y=
当X大于等于45且小于90度时,Y=
当X大于等于90且小于180度时,Y=
当其它度数时,Y=0。
请给出测试结果并拷屏输出。
实验目的(一句话)
编写程序,按指定要求输出
实验要求
实验代码
PROGRAMTest10
REAL:
:
X,Y,Xarc
parameter(pi=3.1415928)
PRINT*,'PleaseinputanangleindegreeforX:
'
READ*,X
IF(X<45)THEN
Xarc=X*pi/180
Y=ABS(tan(Xarc))
ELSEIF(45<=X.AND.X<90)THEN
Xarc=X*pi/180
Y=LOG(0.8)*cos(Xarc)/2!
!
Y=cos(Xarc)/2
ELSEIF(90<=X.AND.X<=180)THEN
Xarc=X*pi/180
Y=5*TAN(SQRT(Xarc))
ELSE
Y=0
ENDIF
PRINT*,'Thevalueoffunction(X)is',Y
PRINT*
END
实验结果考屏
学号:
20154244000姓名:
ABC日期:
2017/4/21上机考试教师:
吴兴征实验地点:
B3-216成绩:
测试题目11
编写程序实现以下要求:
(1)写一个函数或子程序FunMod,求出1到m(含m,比如m=210)中能被7整除的所有整数。
(2)主程序调用FunMod函数或子程序,并读入和显示这些整数。
最终在屏幕上输出它们。
实验目的(一句话)
编写程序,按指定要求输出
实验要求
实验代码
PROGRAMTest11
IMPLICITNONE
INTEGER:
:
i
Character*1,indexX
indexX=''
DOi=1,210
callFunMod(i,indexX)!
callexternalsubroutine
IF(indexX=='T')THEN
WRITE(*,*)i!
theintergerwhichcanbemodedwith7
ENDIF
ENDDO
END
subroutineFunMod(IntTmp,indexX)
integerIntTmp
Character*1,indexX
IF(MOD(IntTmp,7)==0)THEN
indexX='T'
else
indexX='F'
ENDIF
endsubroutine
实验结果考屏
学号:
20154244000姓名:
ABC日期:
2017/4/21上机考试教师:
吴兴征实验地点:
B3-216成绩:
测试题目12
编写一个内部函数子程序求m个实数的平方和。
并在屏幕上输出测试结果。
实验目的(一句话)
编写程序,按指定要求输出
实验要求
实验代码
PROGRAMTest12
IMPLICITNONE
INTEGER:
:
M!
RESforresult
realArr(5)
RealS1
M=5
Arr
(1)=1.5
Arr
(2)=2.5
Arr(3)=3.5
Arr(4)=4.5
Arr(5)=5.5
S1=SumSquare(M,Arr)!
internalfunction
Print*,'Summationofx^2is',S1
CONTAINS
RealFunctionSumSquare(N,Arr)
INTEGER:
:
N,I
Real:
:
Arr(5)
SumSquare=0.0
DOI=1,N
SumSquare=SumSquare+Arr(I)**2
ENDDO
endfunction
END
实验结果考屏
学号:
20154244000姓名:
ABC日期:
2017/4/21上机考试教师:
吴兴征实验地点:
B3-216成绩:
测试题目13
编写一个外部子程序求一个一维数组(实数)的各元素的平方之和,并在主程序中打印输出,最终在屏幕上打印输出结果。
实验目的(一句话)
编写程序,按指定要求输出
实验要求
实验代码
PROGRAMTest13
IMPLICITNONE
INTEGER:
:
N!
RESforresult
realArr(5)
RealRES
N=5
Arr
(1)=1.5
Arr
(2)=2.5
Arr(3)=3.5
Arr(4)=4.5
Arr(5)=5.5
callSquare(N,Arr,RES)!
externalsubroutine
PRINT*,'S=',RES
END
SubroutineSquare(N,Arr,RES)
INTEGER:
:
N
Real:
:
RES,Arr(5)
RES=0.0
DOI=1,N
RES=RES+Arr(I)**2
ENDDO
ENDsubroutine
实验结果考屏
学号:
20154244000姓名:
ABC日期:
2017/4/21上机考试教师:
吴兴征实验地点:
B3-216成绩:
测试题目14
编写外部函数子程序MUL,其功能是求所有N(=5)个正整数之积。
并在屏幕上输出测试结果。
实验目的(一句话)
编写程序,按指定要求输出
实验要求
实验代码
PROGRAMTest14
IMPLICITNONE
INTEGER:
:
N,S,MUL!
Sforresult
integerArr(5)
N=5
Arr
(1)=18
Arr
(2)=28
Arr(3)=48
Arr(4)=78
Arr(5)=21
S=MUL(N,Arr)!
externalfunction
PRINT*,'S=',S
END
FUNCTIONMU