感觉这个题有个小坑。。。。如果是以数字结尾还需要计算一次
附上AC代码:
#include<bits/stdc++.h>
using namespace std;
const int maxn = 100;
int main()
{
int t;
char s[maxn];
scanf("%d", &t);
while(t--){
scanf("%s", s);
int len = strlen(s);
double ans = 0, alpha = 0, digit = 0;
for(int i = 0; i < len; i++){
if(isalpha(s[i])){
if(digit){
ans += alpha * (digit - 1);
}
if(s[i] == 'C'){
alpha = 12.01;
}else if(s[i] == 'H'){
alpha = 1.008;
}else if(s[i] == 'O'){
alpha = 16.00;
}else if(s[i] == 'N'){
alpha = 14.01;
}
ans += alpha;
digit = 0;
}else if(isdigit(s[i])){
{
digit = 10 * digit + (s[i] - '0');
}
}
}
if(isdigit(s[len - 1])) ans += alpha * (digit - 1);
printf("%.3f\n", ans);
}
return 0;
}