给出一种物质的分子式(不带括号),求分子量。本题中的分子式只包含4种原子,分别为C, H, O, N,原子量分别为12.01, 1.008, 16.00, 14.01(单位:g/mol),输入t个分子式,输出分子量,保留三位小数。
输入: 4 C C6H5OH NH2CH2COOH C12H22O11
输出: 12.010 94.108 75.070 342.296 哈哈哈,想不明白怎样分清数字和字母,参考大佬的,膜拜!!!
代码语言:javascript复制#include<stdio.h>
#include<string.h>
#include<ctype.h>
#define N 100
int search(char a,char* p){ //用于查找某字符在字符数组里的下标位置
int i;
for(i=0;i<4;i )
if(a==p[i])
return i;
}
int main(){
char s[N],abc[]="CHON";
int num[4] = {0},t=0,i=0;
float sum;
scanf("%s",s);
while(isdigit(s[i])){
t = 10*t s[i]-'0';
i ;
}
for(;i<strlen(s);i ){
if(isalpha(s[i]))
if(isdigit(s[i 1])&&isdigit(s[i 2]))
num[search(s[i],abc)] = 10*(s[i 1]-'0') (s[i 2]-'0');
else
num[search(s[i],abc)] =isdigit(s[i 1])?s[i 1]-'0':1;
}
sum=12.01*num[0] 1.008*num[1] 16*num[2] 14.01*num[3];
if(t==0) t=1;
printf("%.3fg/moln",t*sum);
return 0;
}