1. 程式人生 > >UVa1586 Molar Mass 相對分子質量

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); }
}