第二十八题 UVA1586 分子量 Molar mass

题目描述
PDF

输入格式

输出格式

题意翻译
现给你若干个分子式需要你求分子量。

例如:C6H5OH的分子量为12.016+1.0085+16.00+1.008=94.108g/mol。

(ps:数字为数字前面元素的下标,所有分子式均无括号例如:2OH=2*16.00+1.008)

输入输出格式

输入:

输入n(2<=n<=99)

接下来n行为分子式

输出:

输出每个分子的分子式

输入输出样例

注意处理 下标是两位数的情况

#include<cstdio>
#include<cstring>
#include<iostream>
inline double Get_(char x) {
	double asn = 0;
	switch(x) {
		case 'C': asn = 12.01; break;
		case 'H': asn = 1.008; break;
		case 'N': asn = 14.01; break;
		case 'O': asn = 16.00; break;
	}
	return asn;
}

int main(int argc,char* argv[]) {
	char x,s[20];
	int T; scanf("%d",&T);
	while(T--) {
		scanf("%s",s);
		double sum = 0;
		int len = strlen(s);
		for(int i=0; i<len; i++) {
			if(isalpha(s[i]) && isdigit(s[i + 1]) && isdigit(s[i + 2]))
                sum += Get_(s[i]) * ((s[i + 1] - '0') * 10 + s[i + 2] - '0');
            else if(isalpha(s[i]) && isdigit(s[i + 1]))
                sum += Get_(s[i]) * (s[i + 1] - '0');   //char型的数字转化成int型要减去0
            else if(isalpha(s[i]) && (!isdigit(s[i + 1])))
                sum += Get_(s[i]);
		}
		printf("%.3f\n",sum);
	}
	return 0;
}
发布了732 篇原创文章 · 获赞 31 · 访问量 17万+

猜你喜欢

转载自blog.csdn.net/qq_35776409/article/details/103935249