分子量(Uva1586)
1.问题描述
给出一个物质的分子式,求分子量,本题中的分子式只包括4种原子,分别为C,H,O,N
原子量分别为12.01,1.008,16.00,14.01例如,C6H5OH的分子量94.108g/mol.
2.代码展示
#include<cstdio>
#include<cstring>
#include<ctype.h>
#define Mc 12.01
#define Mh 1.008
#define Mo 16.00
#define Mn 14.01
#define maxn 50
using namespace std;
int main()
{
char s[maxn];
double sum=0;
scanf("%s",s);
for(int i=0;i<strlen(s);)
{
int cnt=1;
//注意原子数可能大于10
if(isdigit(s[i+1]))
{
if(isdigit(s[i+2])) cnt=(s[i+2]-'0')*10+(s[i+1]-'0');
else cnt=(s[i+1]-'0');
}
switch(s[i])
{
case ('C'):sum+=Mc*cnt; break;
case ('H'):sum+=Mh*cnt; break;
case ('O'):sum+=Mo*cnt; break;
case ('N'):sum+=Mn*cnt; break;
default: break;
}
i+=(cnt==1?1:(cnt>9?3:2));
}
printf("%s的分子量等于:%.3f",s,sum);
return 0;
}