UVA1586 (Molar Mass)

1586

1586

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

#include <stdio.h>
#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;
}
运行结果
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容