3-2 分子量(Molar Mass, ACM/ICPC Seoul 2007, UVa1586)

1586 - Molar mass

习题3-2 分子量(Molar Mass, ACM/ICPC Seoul 2007, UVa1586)
给出一种物质的分子式(不带括号),求分子量。本题中的分子式只包含4种原子,分别为C, H, O, N,原子量分别为12.01, 1.008, 16.00, 14.01(单位:g/mol)。例如,C6H5OH的分子量为94.108g/mol。

#include <stdio.h>
#include <string.h>
#include <ctype.h>

#define MAXN 85
#define C 12.01
#define H 1.008
#define O 16.00
#define N 14.01

int main(){
    int T=0;
    char s[MAXN];
    scanf("%d",&T);
    while(T--){
        double sum = 0.0;
        scanf("%s",s);
        int n = strlen(s);
        int i;
        for (i=0;i<n;){
            int cnt = 1;
            if (isdigit(s[i+1])){
                if (isdigit(s[i+2])){
                    cnt = (s[i+1]-'0')*10+(s[i+2]-'0');
                }
                else cnt = s[i+1]-'0';
            }
            switch (s[i]){
                case ('C'):
                    sum += C*cnt;
                    break;
                case ('O'):
                    sum += O*cnt;
                    break;  
                case ('N'):
                    sum += N*cnt;
                    break;
                case ('H'):
                    sum += H*cnt;
                    break;
                default:
                    break;
            }   
            i += (cnt==1?1:(cnt>9?3:2));
        }
        printf("%.3f\n",sum);
    }
    return 0;
}


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. 关于诊断X线机准直器的作用,错误的是()。 (6.0 分) A. 显示照射野 B. 显示中心线 C. 屏蔽多...
    我们村我最帅阅读 10,828评论 0 5
  • 3-2 「UVa1586」分子量: 给出一种物质的分子式(不带括号)求分子量。本题分子只包含4种原子,分别为C,H...
    hhallelujah阅读 283评论 0 0
  • 1. 下列叙述错误的是()。 (2.0 分) A. 质量管理包括QA和QC一切活动的全部过程 B. 影像质量是指对...
    我们村我最帅阅读 3,969评论 0 8
  • 化学计算题是高中生在测验中较难得分的一类题,能选用最合适的方法准确而快速地解决计算题,对于提高学习成绩有着重要意义...
    ba31ea2f0eef阅读 1,038评论 0 0
  • 01. 颅脑CT扫描采用的听眶线是()。 (1.0 分) A. 外耳孔与外眼眦的连线 B. 外耳孔上缘与眶下缘的连...
    我们村我最帅阅读 3,429评论 0 6