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,根据各种情况进行分析编写

     

  • 相关阅读:
    为什么要选择忍者站群?
    SDCMS1.31 如何发布?
    强大的忍者站群
    出现未能加载“OpenWebKitSharp”是什么原因?
    wordpress发布模块如何使用?
    忍者站群做了百度竞价,岂不是跟站群相违背吗?
    点点博客的发布模块,如何使用?
    为什么有时候明明提示登陆成功,却无法获取分类或无法发布?
    被百度K了,怎么办?
    笔记0611
  • 原文地址:https://www.cnblogs.com/liaoguifa/p/2774324.html
Copyright © 2011-2022 走看看