答案如下
#include<bits/stdc++.h>
using namespace std;
const double c=12.01,h=1.008,o=16.00,n=14.01;
int main()
{
int x;
cin>>x;
for(int i=0;i<x;i++)
{
char s[100];
cin>>s;
double an=0;
for(int i=0;i<strlen(s);i++)
{
if(s[i]=='C')
{
if(s[i+1]>='0'&&s[i+1]<='9'&&s[i+2]>='0'&&s[i+2]<='9')
an+=((s[i+1]*10-'0'*10+s[i+2]-'0')*c);
else if(s[i+1]>='0'&&s[i+1]<='9')
an+=((s[i+1]-'0')*c);
else an+=c;
}
if(s[i]=='H')
{
if(s[i+1]>='0'&&s[i+1]<='9'&&s[i+2]>='0'&&s[i+2]<='9')
an+=((s[i+1]*10-'0'*10+s[i+2]-'0')*h);
else if(s[i+1]>='0'&&s[i+1]<='9')
an+=((s[i+1]-'0')*h);
else an+=h;
}
if(s[i]=='O')
{
if(s[i+1]>='0'&&s[i+1]<='9'&&s[i+2]>='0'&&s[i+2]<='9')
an+=((s[i+1]*10-'0'*10+s[i+2]-'0')*o);
else if(s[i+1]>='0'&&s[i+1]<='9')
an+=((s[i+1]-'0')*o);
else an+=o;
}
if(s[i]=='N')
{
if(s[i+1]>='0'&&s[i+1]<='9'&&s[i+2]>='0'&&s[i+2]<='9')
an+=((s[i+1]*10-'0'*10+s[i+2]-'0')*n);
else if(s[i+1]>='0'&&s[i+1]<='9')
an+=((s[i+1]-'0')*n);
else an+=n;
}
}
printf("%.3f\n",an);
}
return 0;
}