分子量

给出一种物质的分子式(不带括号),求分子量。本题中的分子式只包含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
哈哈哈,想不明白怎样分清数字和字母,参考大佬的,膜拜!!!


#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/mol\n",t*sum);
	return 0;
}

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务