C++编写
本题中的分子式只包含4种原子,分别为C,H,O,N,原子量分别为12.01,1.008,16.00,14.01(单位:g/mol)
int main()
{
char Molar[20];
double count=0;
cin >>Molar;
int i=0;
while(i<sizeof(Molar)/sizeof(char) )
{
if (Molar[i + 1] == '\0')//用于检测H2O等形式的分子式
{
if (Molar[i] == 'C')
count += 12.01;
if (Molar[i] == 'H')
count += 1.008;
if (Molar[i] == 'O')
count += 16.00;
if (Molar[i] == 'N')
count += 14.01;
break;
}
if (Molar[i] == '\0')//用于检测NO2形式的分子式
break;
if ((Molar[i + 1] >= '0') && (Molar[i + 1] <= '9'))//例如C6,则计算C*6的分子量
{
if (Molar[i] == 'C')
count += 12.01*(Molar[i + 1] - 48);
if (Molar[i] == 'H')
count += 1.008*(Molar[i + 1] - 48);
if (Molar[i] == 'O')
count += 16.00*(Molar[i + 1] - 48);
if (Molar[i] == 'N')
count += 14.01*(Molar[i + 1] - 48);
i += 2; //数组下标加2
}
if (Molar[i + 1]=='C'||Molar[i + 1] == 'H'||//例如OH,则加上O的分子量
Molar[i + 1]=='O'||Molar[i + 1] == 'N')
{
if (Molar[i] == 'C')
count += 12.01;
if (Molar[i] == 'H')
count += 1.008;
if (Molar[i] == 'O')
count += 16.00;
if (Molar[i] == 'N')
count += 14.01;
i += 1;
}
}
cout << count<<"g/mol"<<endl;
return 0;
}