zoukankan      html  css  js  c++  java
  • SCAU 8626 原子量计数

    8626 原子量计数

    时间限制:1000MS  内存限制:1000K 提交次数:0 通过次数:0

    题型: 编程题   语言: 无限制

    Description

    给出一个化学原子式,仅含有C,H,O,N 四种元素,计算其总分子量。

    例如,C6H5OH 的原子量为94.108g/mol,计算方法为:
    6 × (12.01 g/mol) + 6 × (1.008 g/mol) +1 × (16.00 g/mol).
    

    Input

    输入的第一行是数字T,表示输入文件含有T个CASE。之后有T行,每行有一个长度小于100 的字符串,
    表示要求的分子式。原子都用大写字母表示,没有括号,保证所有的式子都合法。
    

    Output

    输出每个式子的原子量。

    Sample Input

    4
    C
    C6H5OH
    NH2CH2COOH
    C12H22O11
    

    Sample Output

    12.010
    94.108
    75.070
    342.296
    

    Hint

    
    

    Source

    PKKJ @ 07 GIS 1

    Provider

    admin

    #include<stdio.h>
    #include<string.h>
    double view(char w, int n)
    {
        switch(w)
        {
            case 'C' : return 12.01*n;
            case 'H' : return 1.008*n;
            case 'O' : return 16.00*n;
            case 'N' : return 14.01*n;
            default : return 0;
        }
    }
    
    int main()
    {
        char list[120], temp;
        int  n, T, i, j, len, count;
        double sum;
        scanf("%d", &T);
        while(T--)
        {
            memset(list, 0, sizeof(list));
            sum = 0;
            scanf("%s", list);
            len = strlen(list);
            for(i=0, count=1; i<len-1; i+=count, count=1)
            {
                if('A'<=list[i] && list[i]<='Z')
                {
                    if('A'<=list[i+count] && list[i+count]<='Z') sum += view(list[i], 1);
                    else 
                    {
                        n = list[i+count++] - '0';
                        while(i+count<len && !('A'<=list[i+count] && list[i+count]<='Z'))
                        n = n*10 + (list[i+count++] - '0');
                        sum += view(list[i], n);
                        
                    }
                }
                
            }
            if('A'<=list[i] && list[i]<='Z') sum += view(list[i], 1);
            printf("%.3lf\n", sum);
        }
    }


    解题报告:

    1y,最主要的是对一个字符串的分析,注意出现的各种情况,在尾位的情况有三种情况(举例说): N4    NC    N11,根据各种情况进行分析编写

     

  • 相关阅读:
    [0] RUP、FDD、SCRUM
    [0] Visual studio 2010 快捷键大全
    [0] Node.js
    Laravel开发:Laravel核心——服务容器的细节特性
    Laravel开发:Laravel核心——Ioc服务容器
    Composer的Autoload源码实现2——注册与运行
    Composer的Autoload源码实现1——启动与初始化
    PHP自动加载功能原理解析
    Lumen开发:phpunit单元测试
    php闭包简单实例
  • 原文地址:https://www.cnblogs.com/liaoguifa/p/2774324.html
Copyright © 2011-2022 走看看