分子量(ACM,UVA1586)
给出一种物质的分子式,求分子量,本题中的分子式中只含4种原子,分别为C,H,O,N
float mol;
char in[100];
int sbit=0;
float fun(char ch)
{
switch (ch)
{
case 'C':
return 12.01;
case 'H':
return 1.008;
case 'O':
return 16.00;
case 'N':
return 14.01;
}
}
int main()
{
int i=0,d=0,count=0;
float sum=0;
scanf("%s",&in);
while (sbit==0)//只有当全部检查完毕退出
{
d = 0;
count = 0;
mol=fun(in[i]);
i++;
while ('0' <=in[i] && in[i] <= '9')//如果是数字的话
{
d = d * 10 + (in[i] - '0');
i++;
count++;
}
if (count == 0)d = 1;
sum += (d*mol);
if (in[i] == 0)
{
sbit = 1;
}
}
printf("%.3f\n",sum);
return 0;
}
已通过AC
此题难度在
1 分子式中下标可能是多位数
2 如果下标是1的话,程序退出