题目描述:
给出一种物质的分子式(不带括号),求分子量。本题中的分子式只包含4种原子,分 别为C, H, O, N,原子量分别为12.01, 1.008, 16.00, 14.01(单位:g/mol)。例如,C6H5OH的 分子量为94.108g/mol。
解决方案:
#include<stdio.h>
#include<ctype.h>
float getwight(char x){
switch(x){
case 'C':return 12.01;break;
case 'H':return 1.008;break;
case 'O':return 16.00;break;
case 'N':return 14.01;break;
}
return 0;
}
int main(){
char s[100]="C6NH5OH";
float sum=0.00;
for(int i=0;i<100;i++){
//字母后面有两位数
if(isalpha(s[i]) && isdigit(s[i+1]) && isdigit(s[i+2])) {
sum += (getwight(s[i])*((s[i+1]-'0')*10+(s[i+2]-'0')));
}
//字母后面有一位数
if(isalpha(s[i]) && isdigit(s[i+1])) {
sum += getwight(s[i])*(s[i+1]-'0');
}
//单个字母
else if(isalpha(s[i])) {
sum += getwight(s[i]);
}
}
printf("%.3f",sum);
return 0;
}