poj 3299 Humidex lightblueme

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
//careful careful careful careful careful careful 
//careful careful careful careful careful careful
//careful careful careful careful careful careful
//careful careful careful careful careful careful
//careful careful careful careful careful careful
//careful careful careful careful careful careful
//careful careful careful careful careful careful
//careful careful careful careful careful careful
//careful careful careful careful careful careful
//careful careful careful careful careful careful//careful careful careful careful careful careful
//careful careful careful careful careful careful
//careful careful careful careful careful careful
//careful careful careful careful careful careful


//careful careful careful careful careful careful
//careful careful careful careful careful careful
//careful careful careful careful careful careful
#define E 2.718281828
double Dgete(double D){
//e = 6.11 × exp [5417.7530 × ((1/273.16) - (1/(dewpoint+273.16)))]
double e=6.11*pow(E,(5417.7530*((1/273.16)-(1/(273.16+D)))));
return e;
}
double egetD(double e){
//double D=(1/((1/273.16)-(log10(e)/log10(6.11)/5417.953)))-273.16;
double D = ( float )( 1/(- log(e / 6.11) / 5417.7530 + 1/273.16)-273.16);            
return D;
}
int main(){
char fc,sc;
double fn,sn;
scanf("%c",&fc);
while(fc!='E'){
//下面的代码要有空格否则会有错误scanf("%lf%c%lf",&fn,&sc,&sn);是错误的
scanf("%lf %c %lf",&fn,&sc,&sn);
if((fc=='T'&&sc=='D')||(fc=='D'&&sc=='T')){//TD ->H
double T,D,H;
if(fc=='T'){
T=fn;D=sn;
}
else{
T=sn;D=fn;
}
double e=Dgete(D);
H=T+(0.5555*(e-10.0));
printf("T %.1f D %.1f H %.1f\n",T,D,H);
}
else if((fc=='T'&&sc=='H')||(fc=='H'&&sc=='T')){//TH ->D
double T,D,H;
if(fc=='T'){
T=fn;H=sn;
}
else{
T=sn;H=fn;
}
//qiu e
double e=(H-T)/0.5555+10;
D=egetD(e);
printf("T %.1f D %.1f H %.1f\n",T,D,H);
}
else if((fc=='H'&&sc=='D')||(fc=='D'&&sc=='H')){//HD ->T
double T,D,H;
if(fc=='H'){
H=fn;D=sn;
}
else{
H=sn;D=fn;
}
double e=Dgete(D);
T=H-0.5555*(e-10.0);
printf("T %.1f D %.1f H %.1f\n",T,D,H);
}
   scanf("%c",&fc);
}
return 0;
}

 

更简洁的代码:

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

#define E 2.718281828
double egetD(double e){
 double D=1/((-log(e/6.11))/5417.753+(1/273.16))-273.16;
 return D;
}

double Dgete(double D){
 //e = 6.11 × exp [5417.7530 × ((1/273.16) - (1/(dewpoint+273.16)))]
 double e=6.11*pow(E,(5417.7530*((1/273.16)-(1/(D+273.16)))));
 return e;
}
int main(){
 char fc,sc;
 double fn,sn;
 double temperature,dewpoint,humidex ,e;
 
 scanf("%c",&fc);
 //case语句和printf连用时,最好将printf放到case中否则会出现错误
 //也就是下面的printf语句要放到每个case中尽管是一样的,而不能放到switch之外
 while(fc!='E'){
  scanf("%lf %c %lf",&fn,&sc,&sn);
  switch(fc + sc){
  case 'T'+'D':
   temperature=(fc=='T')?fn:sn;
   dewpoint=(fc=='D')?fn:sn;
   e=Dgete(dewpoint);
   humidex=temperature+0.5555*(e-10);
   printf("T %.1f D %.1f H %.1f\n",temperature,dewpoint,humidex);
   break;
  case 'H'+'D':
   humidex=(fc=='H')?fn:sn;
   dewpoint=(fc=='D')?fn:sn;
   e=Dgete(dewpoint);
   temperature=humidex-0.5555*(e-10);
   printf("T %.1f D %.1f H %.1f\n",temperature,dewpoint,humidex);
   break;
  case 'T'+'H':
   temperature=(fc=='T')?fn:sn;
   humidex=(fc=='H')?fn:sn;
   e=(humidex-temperature)/0.5555+10;
   dewpoint=egetD(e);
   printf("T %.1f D %.1f H %.1f\n",temperature,dewpoint,humidex);
   break;
  //default:
 //  printf("T %.1f D %.1f H %.1f\n",temperature,dewpoint,humidex);
  }
  
  scanf("%c",&fc);
 }
 
 return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值