#include <stdio.h>
#include <string.h>
#include <ctype.h>
int main()
{
int i=0, j=0, k=0, m=0, n=0;
float sum=0;
int count=0;
char element[5], substance[50];
char elements[100][5]={"C","H","O","N","He","Li","Be","B","F","Ne","Na","Mg","Al","Si","P","S","Ci","Ar","K","Ca"};
float index[100]={12.01, 1.008, 16.00, 14.01, 4.003, 6.941, 9.012, 10.81, 19.00, 20.18, 22.99, 24.31, 26.98,28.09,30.97,32.06,35.45,39.95,39.1,40.08};
int num_ele=0;
scanf("%d",&n);
for(m=0; m<n; m++){
scanf("%s",substance);
sum=0;
for(i=0;i<strlen(substance);i++){
if(isupper(substance[i])){
if(islower(substance[i+1])){
num_ele = 2;
}
else {
num_ele = 1;
}
if(num_ele){
k=i;
for(j=0;j<num_ele;j++,k++){
element[j] = substance[k];
}
element[j] = 0;
num_ele=0;
j=0;
while(1){
if(!strcmp(element,elements[j])){
break;
}
j++;
}
sum+=index[j];
}
}
else if(isdigit(substance[i])){
count = 0;
while(isdigit(substance[i])){
count = count * 10 + (substance[i] - '0');
i++;
}
i--;
count--;
sum+=(index[j]*count);
}
}
printf("%.3f\n",sum);
}
return 0;
}
uVa1586 元素周期表
最新推荐文章于 2022-08-09 13:20:32 发布