题解
2023-10-05 14:58:20
发布于:浙江
14阅读
0回复
0点赞
本题分为两个步骤求解:
1、从24个月份温度信息,每3个月为一个季节,计算出每个季节的温度差(最大值-最小值)得到8个季节的温差;
计算一个季节温差的算法为:
monthMax=0;
monthMin=100;
tmp=0;
for (int j=0;j<3;j++)
{
cin >> tmp;
if (tmp >= monthMax)
{
monthMax = tmp;
}
if (tmp <= monthMin)
{
monthMin = tmp;
}
}
因为题干中 0<=平均温差<=100 ,则将月份温差最大值 monthMax 初始化为 0;月份温差最小值 monthMin 初始化为 100;
任意代入几个数字,就可以梳理出其中的逻辑
假如三次输入分别为 8 7 6
则当输入8后,tmp=8, monthMax=8, monthMin=8;
输入7后,tmp=7, monthMax=8, monthMin=7;
输入6后,tmp=6, monthMax=8, monthMin=6;
一轮输入结束后,monthMax中储存着3个数字中的最大值,monthMin为最小值,tmp没有用,可以无视
理解不了的话可以多代入一些数字,多推演几次
2、从8个季节的温差中,找到最大值和最小值,计算二者的差,得到S-Index;
与前面计算季节温差的方式相同,这里设置了两个变量,分别储存季节温差的最大值和最小值
int seasonMax=0,seasonMin=100;
根据上一步的代码,每完成3个数字的输入,可以得到一个季节中的monthMax和monthMin
再进行一步判断
if (monthMax-monthMin >= seasonMax){ // 如果当前计算出的季节温差大于已记录的季节温差最大值
seasonMax = monthMax-monthMin; // 将最大值更新
}
if (monthMax-monthMin <= seasonMin) // 如果当前计算出的季节温差小于已记录的季节温差最小值
{
seasonMin = monthMax-monthMin; // 将最小值更新
}
完整代码:
# include <iostream>
using namespace std;
int main(){
int seasonMax=0,seasonMin=100;
int monthMax,monthMin,tmp;
for (int i=0;i<8;i++)
{
monthMax=0;
monthMin=100;
tmp=0;
for (int j=0;j<3;j++)
{
cin >> tmp;
if (tmp >= monthMax)
{
monthMax = tmp;
}
if (tmp <= monthMin)
{
monthMin = tmp;
}
}
if (monthMax-monthMin >= seasonMax)
{
seasonMax = monthMax-monthMin;
}
if (monthMax-monthMin <= seasonMin)
{
seasonMin = monthMax-monthMin;
}
}
cout << (seasonMax - seasonMin);
return 0;
}
这里空空如也
有帮助,赞一个