一开始把题意理解错了,很尴尬啊 Orz
NH2CH2COOH理解为两个NH两个CH和一个COOH了
如果给高中化学老师知道了,不知道他是否会因我汗颜啊
#include <cstdio>
#include <iostream>#include <cstring>
#include <cctype>
#include <cstdlib>
using namespace std;
float str[129];
int main()
{
str['C']=12.01;
str['N']=14.01;
str['O']=16.00;
str['H']=1.008;
int n;
cin>>n;
while(n--)
{
char a[50]= {0};
cin>>a;
double sum=0;
int vle=0;
if(!isdigit(a[strlen(a)-1])) a[strlen(a)]='1';
;
for(int i=0,j=0; i<strlen(a); )
{
char b[8]= {0};
if(!isdigit(a[i])&&!isdigit(a[i+1]))
{
if(a[i]=='C')sum+=12.01;
else if(a[i]=='O')sum+=16.00;
else if(a[i]=='N')sum+=14.01;
else if(a[i]=='H')sum+=1.008;
i++;
}
char c;
if(!isdigit(a[i])&&isdigit(a[i+1]))
{
c=a[i++];
while(isdigit(a[i]))
{
b[j++]=a[i++];
}
}
vle=atoi(b);
sum+=vle*str[c];
j=0;
}
;
printf("%.3f\n",sum);
}
return 0;
}