原题链接:https://vjudge.net/problem/UVA-1586
分类:字符串
备注:水题
思路:没什么好说的,正确理解了题目意思就OK了
#include<stdio.h>
#include<ctype.h>
using namespace std;
int T;
double key[256], flag[256];
char s[105];
int main(void)
{
key['C'] = 12.01; key['H'] = 1.008; key['O'] = 16.00; key['N'] = 14.01;
scanf("%d", &T); getchar();
while (T--)
{
fgets(s, 105, stdin);
int i = 0, x = 0;
double temp = 0, sum = 0;
while (s[i] != '\n')
{
if (isdigit(s[i]))
{
if (isdigit(s[i + 1]))x = 10 * (s[i] - '0') + s[i + 1] - '0';
else x = s[i] - '0';
sum += key[s[i - 1]] * (x - 1);
}
else sum += key[s[i]];
i++;
}
printf("%.3lf\n", sum);
}
return 0;
}