#include <stdio.h>
#include <string.h>
#include <ctype.h>
#define NUM 85
char s[NUM];//记录输入字符串
int main() {
double w[4] = { 12.01,1.008,16.00,14.01 };
int t = 0;
double sum = 0;
int num[4] = { 0 };//记录c,h,o,n出现次数
scanf_s("%d", &t);
while (t--) {
scanf_s("%s", s,sizeof(s));
int n = strlen(s);
for (int i = 0; i < n; i++) {
sum = 0;
memset(sum, 0, sizeof(sum));
if (s[i] == 'C') {
if (isdigit(s[i + 1]) && isdigit(s[i + 2]))
num[0] += (s[i + 1] - '0') * 10 + (s[i + 2] - '0');
else num[0] += isdigit(s[i + 1]) ? (s[i + 1] - '0') : 1;
}
if (s[i] == 'H') {
if (isdigit(s[i + 1]) && isdigit(s[i + 2]))
num[1] += (s[i + 1] - '0') * 10 + (s[i + 2] - '0');
else num[1] += isdigit(s[i + 1]) ? (s[i + 1] - '0') : 1;
}
if (s[i] == 'O') {
if (isdigit(s[i + 1]) && isdigit(s[i + 2]))
num[2] += (s[i + 1] - '0') * 10 + (s[i + 2] - '0');
else num[2] += isdigit(s[i + 1]) ? (s[i + 1] - '0') : 1;
}
if (s[i] == 'N') {
if (isdigit(s[i + 1]) && isdigit(s[i + 2]))
num[3] += (s[i + 1] - '0') * 10 + (s[i + 2] - '0');
else num[3] += isdigit(s[i + 1]) ? (s[i + 1] - '0') : 1;
}
}
for (int i = 0; i < 4; i++) {
sum += w[i] * num[i];//四个(单位质量*次数)相加即为总质量
}
printf("%.3lf\n", sum);
}
return 0;
}
isdigit()是在stype.h下的函数,其作用是判断参数是否为‘1’--‘9’之间的数。