UVa1586 Molar Mass 相对分子质量

可以用表储存相对分子质量,注意判断原子的数量

#include <cstdio>
#include <cstring>
#include <cctype>
int main()
{
	int T;
	double mass[255];
	mass['C'] = 12.01;
	mass['H'] = 1.008;
	mass['O'] = 16.00;
	mass['N'] = 14.01;
	scanf("%d", &T);
	while (T--)
	{
		double sum = 0;
		char formular[1000];
		int i, len;
		scanf("%s", &formular);
		len = strlen(formular);
		for (i = 0; i < len; i++)
		{
			if (isupper(formular[i]))
			{
				if (isupper(formular[i + 1]) || formular[i + 1] == '\0')
					sum += mass[(int)formular[i]];
				else if (isupper(formular[i + 2]) || formular[i + 2] == '\0')
				{
					sum += mass[(int)formular[i]] * (double)(formular[i + 1] - '0');
					i++;
				}
				else if (isupper(formular[i + 3]) || formular[i + 3] == '\0')
				{
					sum += mass[(int)formular[i]] * (double)((formular[i + 1] - '0') * 10 + (formular[i + 2] - '0'));
					i += 2;
				}
			}
		}
		printf("%.3f\n", sum);
	}
}

猜你喜欢

转载自blog.csdn.net/k775605055/article/details/84137199