题目思路:
1.题目中涉及到三个变量,要求给出其中两个,计算出第三个,然后将三个内容都输出。其中涉及到的主要问题为:
判断需要计算哪个参数
根据上述判断执行计算过程
2.首先解决第一个问题,因为三个参数默认值都是在-100~100之间,所以可以设初始值三个数都是200,这样在输入结束后必然就有一个数还是200,这样就能判断是计算哪个参数。
3.其次解决计算问题。计算过程的公式都已经给出了,剩下的就是对这个公式进行变换,然后用代码表示出来就好了。这里使用到了标准库中的乘方函数以及对数函数(log),直接代公式就可以了。
humidex = temperature + h h = (0.5555)× (e - 10.0) e = 6.11 × exp [5417.7530 × ((1/273.16) - (1/(dewpoint+273.16)))]
最后需要注意的点就是输出控制。
在这里题目要求是四舍五入并保留一位小数。使用setprecision和fixed
代码如下:
#include<iostream>
#include<math.h>
#include<string>
#include<iomanip>
using namespace std;
int main(void)
{
char c;
double t,d,h;
int i;
while(1)
{
t = d = h = 200; //三个参数的范围默认都是在-100 ~ 100
for(i=0; i<2; i++)
{
cin >> c;
if(c == 'E')
return 0;
else if(c == 'T')
cin >> t;
else if(c == 'D')
cin >> d;
else if(c == 'H')
cin >> h;
}
if(h == 200)
h = t + 0.5555 * (6.11*exp(5417.7530*(1/273.16-1/(d+273.16)))-10);
else if(t == 200)
t = h - 0.5555 * (6.11*exp(5417.7530*(1/273.16-1/(d+273.16)))-10);
else if(d == 200)
d = 1 / ((1/273.16)-((log((((h-t)/0.5555)+10.0)/6.11))/5417.7530))-273.16;
cout << fixed << setprecision(1) <<"T "<<t<<" D "<<d<<" H "<<h<< endl;
}
return 0;
}