#include<stdio.h>
#include<string.h>
int main()
{
char a[5000][100];
double f[5000]={0};
int T,i,j,b,t,d;
double e;
scanf("%d",&T);
for(j=0;j<T;j++)
{
scanf("%s",a[j]);
for(i=0;i<strlen(a[j]);i++)
{
if(isdigit(a[j][i])==0)
{
switch(a[j][i])
{
case'C':e=12.01;break;
case'H':e=1.008;break;
case'O':e=16.00;break;
case'N':e=14.01;break;
}
if(isdigit(a[j][i+1])==0)
f[j]+=e;
}
else
{
if(isdigit(a[j][i-1])==0)
{
t=a[j][i]-'0';
if(isdigit(a[j][i+1]))
{
d=a[j][i+1]-'0';
b=t*10+d;
f[j]+=e*b;
}
else
f[j]+=e*t;
}
}
}
}
for(i=0;i<T;i++)
{
printf("%.3lf\n",f[i]);
}
return 0;
}
这题很简单的,可是让我在uva上提交了好几遍,一直是编译错误,后来才发现有个头文件用错了,估计不是c里的。。。