习题3-2 分子量(Molar mass,UVa1586)
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#define maxn 90
char s[maxn];double d[5];double o[100];
const char*p="CHON";
int main()
{ d[0]=12.010;d[1]=1.008;d[2]=16.000;d[3]=14.010;
int n=0;int nn=0;
scanf("%d",&n);nn=n;
while(n--)
{double mass=0.0;scanf("%s",s);
for (int i=0;i<int(strlen(s));i++)
{double t=0.0;
for (int j=0;j<int(strlen(p));j++)
{ if(s[i]==p[j])
{ if(isdigit(s[i+1]))
{ t=(s[i+1]-'0')*d[j];
if(isdigit(s[i+2]))
{
t=((s[i+1]-'0')*10+(s[i+2]-'0'))*d[j];
}
}
if(isalpha(s[i+1])||s[i+1]=='\0')
{t=t+d[j];}
}
}
if (isalpha(s[i])) mass=mass+t;
}
o[n]=mass;
}
for(int i=nn-1;i>=0;i--)
{
printf("%.3f\n",o[i]);
}
return 0;
}