给出一种物质的分子式(不带括号),求分子量。本题中的分子式只包含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>
#define MAX 80
#define C_val 12.01
#define H_val 1.008
#define O_val 16
#define N_val 14.01
int main(){
char s[MAX];
gets(s);
float sum=0;
for(int i=0; i<strlen(s); i++){
if(s[i]=='C'){
if(s[i+1]>='0' && s[i+1]<='9'){
int t1 = int(s[i+1]-'0'); //int(字符-’0’)=整数
sum += t1*C_val;
}
else
sum += C_val;
}
if(s[i]=='H'){
if(s[i+1]>'0' && s[i+1]<'9'){
int t2 = int(s[i+1]-'0');
sum += t2*H_val;
}
else
sum += H_val;
}
if(s[i]=='O'){
if(s[i+1]>'0' && s[i+1]<'9'){
int t3 = int(s[i+1]-'0');
sum += t3*O_val;
}
else
sum += O_val;
}
if(s[i]=='N'){
if(s[i+1]>'0' && s[i+1]<'9'){
int t4 = int(s[i+1]-'0');
sum += t4*N_val;
}
else
sum += N_val;
}
}
printf("%.3f\n", sum);
return 0;
}