一道确实很简单的一题,却浪费了我大量的时间,一开始题目看了很久,看完后,正如网上的资料所说是一道相当水的题,特别适宜刷题,可是自己被while(scanf("%c",&T)!=EOF)和scanf("%f %c %f",&a,&D,&b);ch = getchar();卡住了,对于字符的输入要特别小心,因为“回车”也会被看做字符,而被输进去,故要设置一些特殊字符来消除“回车”:ch = getchar();
#include<stdio.h>
#include<math.h>
int main(){
float e,y,h,temp,dew,humidex,a,b;
char T,D, ch;
while(scanf("%c",&T)!=EOF){
if(T=='E') break;
scanf("%f %c %f",&a,&D,&b);ch = getchar();
//printf("AA/n");
switch(T+D){
case 'T'+'D':
{
temp = (T=='T') ? a:b;
dew = (D=='D') ? b:a;
y = pow(2.718281828,5417.7530*((1/273.16) - (1/(dew+273.16))));
e = 6.11*y;
h = (0.5555)*(e - 10.0);
humidex = temp + h;
break;
}
case 'T'+'H':
{
temp = (T=='T') ? a:b;
humidex = (D=='H') ? b:a;
h = humidex - temp;
e = (float) (h / 0.5555 + 10.0) ;
dew = (float) (1/(-log(e/6.11)/5417.7530 + (1/273.16))-273.16);
break;
}
case 'H'+'D':
{
humidex = (T=='H') ? a:b;
dew = (D=='D') ? b:a;
e = (float) (6.11 * exp (5417.7530 * ((1/273.16) - (1/(dew+273.16)))));
h = (float) ((0.5555) * (e - 10.0));
temp = humidex - h;
break;
}
}
printf("T %.1f D %.1f H %.1f/n",temp,dew,humidex);
}
return 0;
}