如何计算相对分子质量

在C++或python中,输入一个由1-2个字符的元素符号,由化学计量数(1省略不写,在符号右边,无括号)组成的化学式,想要求其的相对分子质量(保留整数)
现在在C++上只会一个由1个字符的元素符号组成的,想要扩展一下,代码如下:(不是纠错!)

#include<bits/stdc++.h>
using namespace std;
char a[2005];
int f(char shuru);
int main(){
    int i,ci,b,l,x,total;
    scanf("%d",&b);
    for(ci=1;ci<=b;ci++){
    total= 0;
    scanf("%s",&a);
    l=strlen(a);
    for(i = 0; i<l; ++i){
    if(a[i+1]>'0'&&a[i+1]<='9'){
    x=0;
    for(int ci=i+1;ci<l;ci++){
    if(a[ci]>='0'&&a[ci]<='9'){
    x=x*10+(a[ci]-'0');     }
    else{
    break;
    }    }
    total=total+x*f(a[i]);
    }
    else if(a[i]>='0'&&a[i]<='9'){
    continue;
    }    
    else {
    total=total+f(a[i]);
     }    }
    cout<<total<<endl;
    }
    return 0;
    }
int f(char shuru)
{
    switch(shuru)
    {
    case 'U':
        return 238;
        break;
    case 'V':
        return 51;
        break;
    case 'H':
        return 1;
        break;
    case 'C':
        return 12;
        break;
    case 'N':
        return 14;
        break;
    case 'O':
        return 16;
        break;
    case 'F': 
        return 19;
        break;
    case 'P':
        return 31;
        break;
    case 'S':
        return 32;
        break;
    case 'K':
        return 39;
        break;
    default:
        return 0;
        break;
    }