#include <stdio.h>
#include <string.h>
#include <math.h>
int num[100000];
char s[100000];
double m[] = {12.01,1.008,16.00,14.01},mass;
int i,n;
void countMass()
{
int cnt = 0,t;
memset(num,0,sizeof(num));
if(s[i] == 'C')
t = 0;
else if(s[i] == 'H')
t = 1;
else if(s[i] == 'O')
t = 2;
else
t = 3;
if(49 <= s[i+1] && s[i+1] <= 57) //处理字符串数字
{
int sum = 0;
while(48 <= s[i+1] && s[i+1] <= 57 && i+1 < n)
{ num[cnt++] = s[i+1] - 48; i++;}
for(int j = 0; j < cnt; j++)
{
sum += num[cnt-1-j] * (int)(pow(10,j) + 0.05);
//printf("sum:%d,pow:%d \n",sum,(int)(pow(10,j) + 0.05));
}
mass += m[t] * sum;
}
else
mass += m[t];
}
int main()
{
int T;
scanf("%d",&T);
while(T--) {
scanf("%s",s);
n = strlen(s);
mass = 0.0;
for(i = 0; i < n; i++)
countMass();
printf("%.3f\n",mass);
}
}
算法入门经典第二版 3-2 Molar Mass
最新推荐文章于 2024-05-27 16:07:24 发布