分子量

2022-05-05 20:26:20 浏览数 (2)

给出一种物质的分子式(不带括号),求分子量。本题中的分子式只包含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;
}
h2

0 人点赞