UVa1586 Molar Mass 相對分子質量
阿新 • • 發佈:2018-11-16
可以用表儲存相對分子質量,注意判斷原子的數量
#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);
}
}