我错哪了。。。
#include<bits/stdc++.h>
using namespace std;
double fz[127];
int main()
{
fz['C']=12.01,fz['H']=1.008,fz['O']=16.00,fz['N']=14.01;/*映射*/
int T,ch,c;
double sum=0,ans=0;
cin>>T;ch=getchar();
while(T--)
{
ans=sum=0;c=0;
while((ch=getchar())!=EOF&&ch!='\n')
{
if(ch>='A'&&ch<='Z')
ans+=sum*max(c,1),c=0,sum=fz[(int)ch];
else
c=c*10+ch-'0';
}
ans+=sum*max(c,1);
printf("%.3lf\n",ans);//cout<<ans<<endl;
}
return 0;
}