首页 > 其他 > 详细

循环结构2

时间:2020-04-21 23:28:02      阅读:78      评论:0      收藏:0      [点我收藏+]

例题1  循环输入一周日最高气温,判断最高气温,并计算一周平均最高气温。求出这几天的哪一天的气温最高?2014年3月23日-29日南京日最高气温如下:16.0 17.0 17.0 18.0 16.0 22.0 24.0 (单位:℃)

program main 
integer i,j,ri
real t,tmax,tave,sum
real::wendu(7)
tmax=0.0
sum=0.0
do i=1,7
   read *,wendu(i)
   sum=sum+wendu(i)
   if(wendu(i)>=tmax) then
   tmax=wendu(i)
   j=i
   end if
end do
tave=sum/7.0
ri=23+j-1
print*,tmax=,tmax
print*,tave=,tave
write(*,200) 最高气温是第, j,
write(*,200) 最高气温是3月, ri,
200 format(A17,I2,A5)
100 format(A20,I2,A6)
end

技术分享图片

分析:上述j只能保留最后一次i的值,不能保留所有i的值,所以要想完成拓展例一,就要对程序进行改进。

拓展例一:例题1  循环输入一周日最高气温,判断最高气温,并计算一周平均最高气温。求出这几天的哪一天的气温最高?如果一周有多天温度一样,都是最高,那应该怎么办?2014年3月23日-29日南京日最高气温如下:23.0 31.0 25.0 31.0 24.0 31.0 27.0 (单位:℃)

 

方法一:
program main integer i,j real jishu,ri real t,tmax,tave,sum real::wendu(
7) tmax=0.0 sum=0.0 m=1 do i=1,7 read *,wendu(i) sum=sum+wendu(i) if(wendu(i)>=tmax) then tmax=wendu(i) end if end do do i=1,7 if(tmax==wendu(i)) then jishu(m)=i m=m+1 end if end do do j=1,m-1 ri(j)=23+jishu(j)-1 end do print *,tmax=,tmax print *,tave=,tave write(*,*) 最高气温是: do j=1,m-1 write(*,100) ,jishu(j), end do write(*,*) 最高气温的日期是: do j=1,m-1 write(*,200) 3月,ri(j), end do 100 format(A10,I3,A5) 200 format(A20,I3,A6) end
(代码有误,记得修改)

 

方法二:
program ex0309
real t(7),tmax,sum,tave
integer i,m
tmax=0.0;sum=0.0;m=1
do i=1,7
 read *,t(i)
 sum=t(i)+sum
 if(t(i)>=tmax) then
 tmax=t(i)
 m=i
 end if
 end do
 tave=sum/7.0
 print*,tmax=,tmax
 print*,气温最高日有:
 do i=1,7
 if(t(i)==tmax) write(*,"(1X,‘3月‘,I2,‘日‘)") i+22
 end do
 print*,tave=,tave
 end

技术分享图片

例2 求同一条经线上,相同格点的距离

PROGRAM MAIN

IMPLICIT NONE

INTEGER ::i

REAL ::r=6371,delta,dy,pi

PARAMETER(pi=3.14159)

delta=pi/180

DO i=0,180  !i代表经度

dy=r*1*delta

PRINT*,i,dy,km

END DO

END

技术分享图片

 

例4 根据所给 5 个气象标准站的纬度、经度数据,利用顺序结构设计、循环结 构设计和选择结构设计的知识,编写程序判断其是否位于江淮地区(109?E 以东, 28?~34?N)的站点。要求如下:

(1)站号需说明为 8 位字符型,因为在 GrADS 软件绘图中站点数据有一定的 书写规则;

(2)表控输入气象标准站站号及其纬度、经度数据;

(3)在屏幕上输出站点号和是否位于江淮地区的判断信息。

技术分享图片

我的程序源码:

PROGRAM main

IMPLICIT NONE

INTEGER I

REAL N,E

CHARACTER(LEN=8) str

PRINT*,请输入经度 纬度

DO I=1,5

READ*,N,E

IF(I==1) str=57865

IF(I==2) str=58626

IF(I==3) str=57328

IF(I==4) str=58251

IF(I==5) str=54714

IF(E>109)THEN

SELECT CASE(INT(N))

CASE(28:34)

PRINT*,str,属于江淮地区

CASE DEFAULT

PRINT*,str,不属于江淮地区

END SELECT

ELSE

PRINT*,str,不属于江淮地区

END IF

END DO

END

我的运行截图:

技术分享图片

标准答案:

program main
integer,parameter::ist=5
real lat,lon
character*8 id
integer i
do i=1,ist
write(*,"(‘输入站点的站号、纬度和经度:‘,\)")
read(*,*)id,lat,lon
if(lon>109.0)then
if(lat>=28.0.and.lat<=34.0)then
write(*,*)id,站位于江淮地区 else
write(*,*)id,站不位于江淮地区 endif
else
write(*,*)id,站不位于江淮地区 endif
enddo
End

标准运行截图:

技术分享图片

 

循环结构2

原文:https://www.cnblogs.com/lxl720/p/12748359.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!