#include<iostream>
#include<cstdio>
#include<cstring>
#include<ctype.h>
using namespace std;
double change(char a)
{
if(a=='C') return 12.010;
else if(a=='H') return 1.008;
else if(a=='O') return 16.000;
else if(a=='N') return 14.010;
}
bool is_digit(char a)
{
if(a>='0'&&a<='9') return 1;
else return 0;
}
int main()
{
int t;
cin>>t;
while(t--)
{
char a[85]={};
cin>>a;
int k=strlen(a);
double sum=0.000;
for(int i=0;i<k;i++)
{
if(isalpha(a[i]))
{
if(is_digit(a[i+1]))
{
if(is_digit(a[i+2]))
sum+=((a[i+1]-'0')*10+(a[i+2]-'0'))*change(a[i]);
else
sum+=(a[i+1]-'0')*change(a[i]);
}
else sum+=change(a[i]);
}
}
printf("%.3f\n",sum);
}
}
UVa-1586 Molar mass
最新推荐文章于 2023-07-21 19:46:12 发布
本文深入探讨了C++编程中如何解析包含字符数组的输入,识别并处理其中的字母与数字组合,实现将字母转换为对应元素的数值,并进行相应的乘法运算。通过实例演示了字符识别、数值转换和数学操作的基本步骤,旨在提升读者对于C++字符串处理和数值运算的理解。
314

被折叠的 条评论
为什么被折叠?



