</pre><p><span style="font-size:18px">//Memory Time</span></p><p><span style="font-size:18px">//200K 0MS</span></p><p><span style="font-size:18px">题意:t,d,h中三个任意给两个,根据公式计算另一个。</span></p><p><span style="font-size:18px">PS:在字符输入时可能会有空格或者换行的影响,可以用getchar()或者scanf("%d %d"..),即读入时两个%之间加空格。</span></p><p><span style="font-size:18px"> 此题用一个数组b[]和flag来确定输入的到底是谁。</span></p><p><span style="font-size:18px">代码:</span></p><p><pre name="code" class="plain">#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<string.h>
int main(){
char ch[2];
double t,d,h,a[2];
int i,b[3],flag;
while(1)
{
for(i=0;i<3;i++)
b[i]=0;
scanf("%c",&ch[0]);
if(ch[0]=='E')
break ;
scanf("%lf %c %lf",&a[0],&ch[1],&a[1]);
getchar();
for(i=0;i<2;i++)
{
if(ch[i]=='T')
{
t=a[i];
b[0]=1;
}
else if(ch[i]=='D')
{
d=a[i];
b[1]=1;
}
else
{
h=a[i];
b[2]=1;
}
}
for(i=0;i<3;i++)
if(!b[i])
flag=i;
switch(flag)
{
case 0:t=h-0.5555*(6.11*exp(5417.7530*(1/273.16-1/(d+273.16)))-10.0);break;
case 1:d=1/(1/273.16-log(((h-t)/0.5555+10)/6.11)/5417.753)-273.16;break;
case 2: h=t+(0.5555*(6.11*exp(5417.7530*(1/273.16-1/(d+273.16)))-10.0));
}
printf("T %.1f D %.1f H %.1f\n",t,d,h);
}
//system("pause");
return 0;
}