習(xí)題3-2 分子量(Molar Mass, ACM/ICPC Seoul 2007, UVa1586)
給出一種物質(zhì)的分子式(不帶括號),求分子量憎账。本題中的分子式只包含4種原子牌芋,分別為C, H, O, N,原子量分別為12.01, 1.008, 16.00, 14.01(單位:g/mol)逃魄。例如瞒瘸,C6H5OH的分子量為94.108g/mol拼窥。
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#define MAXN 85
#define C 12.01
#define H 1.008
#define O 16.00
#define N 14.01
int main(){
int T=0;
char s[MAXN];
scanf("%d",&T);
while(T--){
double sum = 0.0;
scanf("%s",s);
int n = strlen(s);
int i;
for (i=0;i<n;){
int cnt = 1;
if (isdigit(s[i+1])){
if (isdigit(s[i+2])){
cnt = (s[i+1]-'0')*10+(s[i+2]-'0');
}
else cnt = s[i+1]-'0';
}
switch (s[i]){
case ('C'):
sum += C*cnt;
break;
case ('O'):
sum += O*cnt;
break;
case ('N'):
sum += N*cnt;
break;
case ('H'):
sum += H*cnt;
break;
default:
break;
}
i += (cnt==1?1:(cnt>9?3:2));
}
printf("%.3f\n",sum);
}
return 0;
}