算法竞赛入门经典(第2版)习题3-2 分子量 Uva1586

来源:互联网 发布:如何选基金 知乎 编辑:程序博客网 时间:2024/05/14 15:37

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;}
1 0