POJ3299-Humidex
http://poj.org/problem?id=3299
公式转换下,细节地方注意下getchar( )就没什么了- -#
#include<stdio.h> #include<math.h> #define max 9999 double totem(double dew,double hum) { double e=6.11*exp(5417.7530*((1/273.16)-(1/(dew+273.16)))); double h=(0.5555)*(e-10.0); return hum-h; } double tohum(double t,double d) { double e=6.11*exp(5417.7530*((1/273.16)-(1/(d+273.16)))); double h=(0.5555)*(e-10.0); return t+h; } double todew(double tem,double hum) { double h=hum-tem; double e=h/0.5555+10.0; return 1/(1/273.16-log(e/6.11)/5417.7530)-273.16; } int main(void) { double tem,hum,dew,x,y; char a,b; while(scanf("%c",&a),a!='E') { getchar(); scanf("%lf %c %lf",&x,&b,&y); getchar(); tem=hum=dew=max; switch(a) { case 'T': tem=x;break; case 'D': dew=x;break; case 'H': hum=x;break; } switch(b) { case 'T': tem=y;break; case 'D': dew=y;break; case 'H': hum=y;break; } if(tem==max) tem=totem(dew,hum); else if(dew==max) dew=todew(tem,hum); else if(hum==max) hum=tohum(tem,dew); printf("T %.1lf D %.1lf H %.1lf\n",tem,dew,hum); } return 0; }