Fortran作业2
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
FORTRAN第二次实习作业
2014301610307 -D-马莉1 、根据最新个人所得税计算方法,如下面的个税税率表。工资、薪金所得,适用七级超额累进税率,税率为百分之三(3% )至百分之四十五(45% )。3500 元为起征点,即只需要缴纳高于3500 元部分的个税。请根据下表编程,通过给定个人收入,计算其所需邀纳的个税。
program jiaoshui
implicit none
integer m
real n
character i
100 print*,'应缴纳所得税是否含税,请回答Y或N:'
read*,i
print*,'请输入工资所得:'
read *,m
if(i=='Y')then
select case(m)
case(0:1500)
n=m*3/100-0
case(1501:4500)
n=m*10/100-105
case(4501:9000)
n=m*20/100-555
case(9001:35000)
n=m*25/100-1005
case(35001:55000)
n=m*30/100-2775
case(55001:80000)
n=m*35/100-5505
case default
n=m*45/100-13505
end select
elseif(i==’N’)then
select case(m)
case(0:1455)
n=m*3/100-0
case(1456:4155)
n=m*10/100-105
case(4156:7755)
n=m*20/100-555
case(7756:27255)
n=m*25/100-1005
case(27256:41255)
n=m*30/100-2775
case(41256:57505)
n=m*35/100-5505
case default
n=m*45/100-13505
end select
else
print*,"输入格式不正确,请重新输入:"
goto 100
endif
print*,n
End
2、编写程序求某天在当年中是第多少天,例如2010 年1 月10 号是2010 年的第10 天。要求分别使用IF 、CASE结构来编写。program tianshu2
implicit none
integer M1(12),i,y,m,d,sum,n
data M1/31,28,31,30,31,30,31,31,30,31,30,31/
sum=0
100 print *,"请输入日期格式例如:2010 10 23"
read 10,y,m,d
10 format(i4,1x,i2,1x,i2)
if(m>12.or.d>31)then
print*,"输入日期格式不对,请重新输入:"
goto 100
else
do i=1,m-1
sum=sum+M1(i)
enddo
sum=sum+d
if ((mod(y,4)==0.and.mod(y,4)/=0).or.mod(y,400)==0)then
sum=sum+1
endif
print *,y,'年',m,'月',d,'日是当年的第',sum,'天'
endif
End
3.编写程序,采用二分法求如下函数的解X3-2x-5=0, x∈[2,3]
module constant
real::a=2,b=3,c,er=1e-5
end module
program erfenfa
use constant
implicit none
real f
do while(abs(a-b)>1e-6)
c=(a+b)/2
if (f(c)*f(a)<0) then
b=c
else
a=c
End if
End do
print *,"f(x)=X3-2x-5=0的解x=",c,",最终f(x)=",f(c)
end
real function f(x) !定义函数
real x
f=x**3-2*x-5
End
4 、编写程序,对于自然数m ,n ,求其最大公约数和最小公倍数。
program gongyueshu
implicit none
integer m,n,i,j
100 print*,'请输入两个自然数:'
read *,m,n
if(m>n)then
i=n
else
i=m
endif
do while(mod(m,i)/=0.or.mod(n,i)/=0)
i=i-1
end do
print *,m,'和',n,'最大公约数是:',i
if(m j=n else j=m endif do while(mod(j,m)/=0.or.mod(j,n)/=0) j=j+1 end do print *,m,'和',n,'最小公倍数是:',j goto 100 End