题目英文说的很复杂
其实就是给一个分子式求它的分子量
读取字母判断原子量
需要注意CO、H2O等原子量为1的情况
(话说在下终于会用markdown写下标了)
在这里也是给自己加了点难度
用了递归的函数来查找原子个数
写的过程中也是遇到了点状况
好在最后还是一次AC了
#include<stdio.h>
#include<string.h>
int t,l;
char s[100];
int find(int m) {
if((s[m+1]>'A'&&s[m+1]<'Z')||(m+1==l)) {
if(t==0)
t=1;
return t;
} else {
t=t*10+s[m+1]-'0';
return find(++m);
}
}
int main() {
int n;
double sum;
scanf("%d",&n);
while(n--) {
scanf("%s",s);
l=strlen(s);
for(int i=sum=0; i<l; i++) {
if(s[i]=='C') {
t=0;
sum+=12.01*find(i);
} else if(s[i]=='H') {
t=0;
sum+=1.008*find(i);
} else if(s[i]=='O') {
t=0;
sum+=16.00*find(i);
} else if(s[i]=='N') {
t=0;
sum+=14.01*find(i);
} else
continue;
}
printf("%.3lf\n",sum);
}
return 0;
}