本文主要是介绍Fortran 程序设计 实习01,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目要求
人体对气候条件感觉的舒适与否,首先取决于气温,其次湿度和风速等因素也起着重要作用。请根据人体舒适度计算公式,完成以下编程内容:
-
计算2020年2月23日武汉,深圳,温州,北京,哈尔滨5个城市的人体舒适度指数;
-
根据人体舒适度指数数值,判断人体舒适度指数等级。
-
要求每个城市的结果单独一行输出,每一行中输出顺序为 城市名、指数等级、体感。
注:体感只输出“寒冷”,“冷”……即可。
参考资料
-
人体舒适度计算公式:
I C H B = ( 1.8 × T + 32 ) − 0.55 × ( 1 − R H 100 ) × ( 1.8 × T − 26 ) − 3.2 × V I_{CHB}=(1.8\times T+32)-0.55\times (1-\frac{RH}{100})\times (1.8\times T-26)-3.2\times \sqrt{V} ICHB=(1.8×T+32)−0.55×(1−100RH)×(1.8×T−26)−3.2×V其中:温度 T T T 为日平均气温, R H RH RH 为相对湿度, V V V 为日平均风速。 -
人体舒适度指数等级
输入样例
武汉 | 深圳 | 温州 | 北京 | 哈尔滨 | |
---|---|---|---|---|---|
日均温(℃) | 14.5 | 21.5 | 12.0 | 5.5 | -7.0 |
相对湿度(%) | 47.0 | 45.0 | 42.0 | 29.0 | 58.0 |
日平均风速(m/s) | 2.45 | 2.45 | 0.9 | 2.45 | 4.4 |
题目分析
这个题目又涉及到相同类型数据多次输入,且相同步骤的处理。于是考虑循环结构。同时查看表格,发现涉及到判断类的相关信息,于是考虑选择结构。
首先 定义一些变量或者数组,用以存放用户输入的数据,或者需要输出的各类数据。
这里我们使用一些数组来存放样例内需要被输入的数据:① 使用类型为CHARACTER
的数组来存放城市名称;② 使用类型为real
的若干数组来存放日均温、相对湿度、以及日均风速这三类数据。
然后观察题目,发现我们需要输出的大部分并非输入到内存中的内容,因此需要定义另外一些变量存储需要输出的数据。发现舒适度与体感等级是我们输入的时候不存在的,因此也需要定义变量来存储它们以进行后续输出的工作。
因此,变量定义部分可以进行如下的书写:
integer j,g !定义循环控制变量,以及体感等级gradereal t(5),v(5),rh(5) !定义实型数组存放T、V、RHcharacter(8) gr(5) !定义字符串型数组存放体感与城市名character(8) city(5) real i(5) !定义实型数组存放每次计算得到的I_CHB
之后是让用户对数据进行读入,这里我们使用read
语句进行该项功能。
read *, city(1:5)
这里使用了Fortran对数组写入的简便写法:隐含do
循环,这样的书写方式可以让代码具有更短的长度。
按照这样的方式对数据进行全部读入之后,我们可以开始对数据进行相关的处理了。
首先我们按照公式计算人体舒适度,这个时候我们需要将数学公式转化为计算机内的表达式:
i=(1.8*t+32)-0.55*(1-rh/100)*(1.8*t-26)-3.2*sqrt(v)
得到 I C H B I_{CHB} ICHB的具体数值之后,我们可以通过表格来进行指数等级和体感的判断了
这里的判断我们可以使用if
-elseif
-endif
语句进行相关的判断
if (i(j).le.25.0) thengr(j)="寒冷"g=1
else if (i(j).le.38) thengr(j)="冷"g=2
else if (i(j).le.50) thengr(j)="凉"g=3
else gr(j)="凉爽"g=4
endif
具体判断体系在此不再列举。
由于在程序运行过程中,我们需要对该过程进行五次,所以可以选择循环结构来重复上述的过程。所以我们使用do
循环来解决这个问题。相关代码如下
do (j=1,5)
...
end do
最后对所得结果进行输出就可以完成此次的实习问题了。
程序运行结果:
程序设计代码:
program In01implicit noneinteger j,greal t(5),v(5),rh(5)character(20) gr(5)character(8) city(5)real i(5)print *,'请输入城市名称(以空格间隔)'read *,city(1:5:1)print *,'请输入各城市日均温(单位:℃)'read *,t(1:5:1)print *,'请输入各城市相对湿度(单位:%)'read *,rh(1:5:1)print *,'请输入各城市相对日平均风速(单位:m/s)'read *,v(1:5:1)print *,''print *,''print *,'城市名 指数等级 体感'do j=1,5i(j)=(1.8*t(j)+32)-0.55*(1-rh(j)/100)*(1.8*t(j)-26)-3.2*sqrt(v(j))if (i(j).le.25.0) thengr(j)="寒冷"g=1else if (i(j).le.38) thengr(j)="冷"g=2else if (i(j).le.50) thengr(j)="凉"g=3else if (i(j).le.55) thengr(j)="凉爽"g=4else if (i(j).le.70) then gr(j)="舒服"g=5else if (i(j).le.75) thengr(j)="暖和"g=6else if (i(j).le.80) thengr(j)="热"g=7else if (i(j).le.85) thengr(j)="炎热"g=8elsegr(j)="酷热"g=9end ifprint *,city(j),' ',g,' ',gr(j)end doend program In01
这篇关于Fortran 程序设计 实习01的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!