UVA1586 (Molar Mass)

UVA1586 (Molar Mass)_第1张图片
1586

UVA1586 (Molar Mass)_第2张图片
1586

分析:读第一个字符肯定为字母,创建一个数组保存化学式个元素分量的质量,最后加起来即可

#include 
#define MAXN 20
int main()
{
    double mass = 0.0;
    char element = '\0';
    double num[MAXN] = {0};//存放元素的质量,数组的和为化学式的质量
    int now = 0;//数组的标志位,置为0
    while ( (element = getchar() )!='\n')
    {
        if (element>='A'&&element<='Z')
        {
            switch (element)
            {
                case 'C': 
                        num[now] += 12.01;
                        now++;
                        break; 
                case 'H': 
                        num[now] += 1.008;
                        now++;
                        break; 
                case 'O': 
                        num[now] += 16.00;
                        now++;
                        break; 
                case 'N': 
                        num[now] += 14.01;
                        now++;
                        break;
                default:
                    break;
            }
        }
        else if (element >= '1'&&element <= '9')
        {
            num[now - 1] *= (double)(element-48);
        }
        else
            printf("输入不正确\n");
    }
    for (int i = 0; i <=now; i++)
    {
        mass += num[i];
    }
    printf("分子量为 %.3f g/mol", mass);
    getchar();
    return 0;
}
UVA1586 (Molar Mass)_第3张图片
运行结果

你可能感兴趣的:(UVA1586 (Molar Mass))