在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;
}