Fortran作业2

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

相关文档
最新文档