循环结构1

program ex1
implicit none
integer i
real sum,tave,t,tmax
sum=0.0
tmax=0.0
do i=1,7
read*,t
sum=t+sum
if(t>tmax) then
tamx=t
end if
end do 
tave=sum/7
print*,'tave=',tave
print*,'tmax=',tmax
end

 

程序源码:

program main
real precip
print *,'输入每六小时降水量'
read *,precip
do while(precip>=0.and.precip<=1000) !或者是(precip.ge.0.and.precip.le.1000)
print *,'降水量(mm)为:',precip
read *,precip
end do
print *,'输入数据异常'
end

运行截图:

program ex08_08
implicit none 
integer i,n
real ::s=0,t
read*,n
do i=1,n
   t=1./(i*(i+1))
   s=s+t
   if(abs(t)<=1.E-5)  exit  !如果把exit另起一行,运行不正确
end do
if(i==n+1) i=i-1  !逻辑IF语句一般IF条件和语句放到一行,若把i=i-1放到下一行,则运行也不正确
print*,'sum=',s,'term=',i
end

program ex08_08
implicit none 
integer i
do i=1,10
  if(i==9) cycle
  print *,i
end do 
end

代码一:
program main
implicit none integer num,i real t,tsum,tave tsum=0.0 num=0 do i=1,31 read*, t if(t==999.0) cycle tsum=tsum+t num=num+1 end do tave=tsum/num print*,tave end
代码二:

program main
implicit none
integer num,i
real t,tsum,tave
tsum=0.0
num=0
do i=1,31
read*, t
if(t/=999.0) then
tsum=tsum+t
num=num+1
end if
end do
tave=tsum/num
print*,tave
end


 

 

 

程序源码:

program main
implicit none 
integer ::i
real ::r=6371,delta,dx,pi
parameter(pi=3.1215926)
delta=pi/180
do i=-90,90
dx=r*cos(i*delta)*(1.*delta)
if(i<0) then ! 南半球
print *,i*(-1),'S:',dx,'km'
else if (i==0) then ! 赤道
print *,'Equator:',dx,'km'
else if (i>0) then ! 北半球
print *,i,'N:',dx,'km'
end if
end do 
end

运行截图:

 

程序源码:

program ex03_14
implicit none
integer iy,im
character year*4,mo*2
character dir*100  !dir变量由于其有效长度是变化的,故定义一个足够唱的字符串
do iy=1979,1990
write(year(1:4),'(i4)') iy !一般有格式输出为write(*,'格式'),iy 是年的循环变量,它会从1979年变化到1990年,如果write(*,'i4') iy的话,那么是把iy输出到屏幕上面,但是现在不是要把它输出到屏幕,而是把iy作为一个字符型的数值输出给红色字体所表示的year中去,而year是所定义的具有四个字符长度的字符型变量,所以就是把1979四个字符长的数值变成了一个字符型的数据,输出给了变量,所以write就是把iy变量的值赋值给了year(1:4),iy是个整型,year是个字符型,但是iy在赋值的时候是按照year的形式来进行最后的这个变量的数据类型,所以1979在iy那里是整型,但是在year那里就变成了字符型,且字符长度有四个,所以它是把year的1-4的四个字符按照1979来开始存放,第一次循环是1979,第二次循环就是1980了
mo=' ' !月比年特殊一点,因为它有可能是一位数的月,也有可能是两位数的月,所以在循环之前,给mo进行空格的保留,将mo赋值为2个或者1个空格均可以
   do im=1,12
      if(im<10)then
         write(mo(1:1),'(i1)')im !i1格式是针对写的变量的类型,即i1
      else
         write(mo(1:2),'(i2)')im
     end if
     dir='e:\data\'//trim(year)//'\'//trim(mo)//'\precip'    !trim是去掉字符型变量中所有的空格,此时尤其针对mo,如果当时给它赋了两个空格,它如果只有一位数的月,那么它其实会多出来一个空格的,所以用trim把空格给去掉
     print*,trim(dir)  !保证输出的时候没有空格
   end do 
end do 
end

运行截图:

方法一:

方法二:

program ex03_14
implicit none
integer iy,im
character year*4,mo*2
character dir*100  !dir变量由于其有效长度是变化的,故定义一个足够唱的字符串
do iy=1979,1990
write(year(1:4),'(i4)') iy !一般有格式输出为write(*,'格式'),iy 是年的循环变量,它会从1979年变化到1990年,如果write(*,'i4') iy的话,那么是把iy输出到屏幕上面,但是现在不是要把它输出到屏幕,而是把iy作为一个字符型的数值输出给红色字体所表示的year中去,而year是所定义的具有四个字符长度的字符型变量,所以就是把1979四个字符长的数值变成了一个字符型的数据,输出给了变量,所以write就是把iy变量的值赋值给了year(1:4),iy是个整型,year是个字符型,但是iy在赋值的时候是按照year的形式来进行最后的这个变量的数据类型,所以1979在iy那里是整型,但是在year那里就变成了字符型,且字符长度有四个,所以它是把year的1-4的四个字符按照1979来开始存放,第一次循环是1979,第二次循环就是1980了
mo=' ' !月比年特殊一点,因为它有可能是一位数的月,也有可能是两位数的月,所以在循环之前,给mo进行空格的保留,将mo赋值为2个或者1个空格均可以
   do im=1,12
         write(mo(1:2),'(i2.2)') im !i2.2格式是针对写的变量的类型,即im
     dir='e:\data\'//trim(year)//'\'//trim(mo)//'\precip'    !trim是去掉字符型变量中所有的空格,此时尤其针对mo,如果当时给它赋了两个空格,它如果只有一位数的月,那么它其实会多出来一个空格的,所以用trim把空格给去掉
     print*,trim(dir)  !保证输出的时候没有空格
   end do 
end do 
end

 上一次作业已经利用选择结构语句,根据人体舒适度指数数值,判断人体舒适度指数等 级。本次作业进一步优化程序,利用循环结构语句简化程序。 按照武汉,深圳,温州,北京,哈尔滨的循环顺序,计算 2 月 23 日人体舒适度指数数 值,判断人体舒适度指数等级,按城市名、指数等级、体感输出结果。 体感只输出 ,前的文字即可,例如:寒冷。

1、人体舒适度计算公式:

其中:温度 T 设定为日平均气温(单位:℃),RH 为相对湿度(单位:%),V 为日平均风 速(单位:m/s)。

我的程序源码:

PROGRAM main

IMPLICIT NONE

REAL T,RH,V,I

INTEGER n

CHARACTER(8) city

print*,'请输入温度 相对湿度 日平均风速'

do n=1,5

READ*,T,RH,V

I=(1.8*T+32)-0.55*(1-RH/100)*(1.8*T-26)-3.2*(V**(1./2.))

if(n==1) city='武汉'

if(n==2) city='深圳'

if(n==3) city='温州'

if(n==4) city='北京'

if(n==5) city='哈尔滨'

if(I<=25)then

print*,city,'1','  ','寒冷'

else if (25<I.and.I<=38)then

print*,city,'2','  ',''

else if (38<I.and.I<=50)then

print*,city,'3','  ',''

else if (50<I.and.I<=55)then

print*,city,'4','  ','凉爽'

else if (55<I.and.I<=70)then

print*,city,'5','  ','舒服'

else if (70<I.and.I<=75)then

print*,city,'6','  ','暖和'

else if (75<I.and.I<=80)then

print*,city,'7','  ',''

else if (80<I.and.I<=85)then

print*,city,'8','  ','炎热'

else if (I>85)then

print*,city,'9','  ','酷热'

END IF

END DO

END

我的运行截图:

标准答案:

 

标准答案运行截图:

 

posted @ 2020-04-20 10:29  李欣玲  阅读(273)  评论(0编辑  收藏  举报