• UVA1586 UVALive3900 Molar mass


    Regionals 2007 >> Asia - Seoul

    问题链接:UVA1586 UVALive3900 Molar mass基础练习题,用C++语言编写程序。

    这个问题是根据分子式,求分子量。

    原子量使用map表来存储,所以用C++来编程。

    程序中,使用函数getchar()处理输入流,需要更高的编程技巧。

    AC的C++语言程序如下:

    /* UVA1586 UVALive3900 Molar mass */
    
    #include <iostream>
    #include <map>
    #include <cstdio>
    #include <cctype>
    
    using namespace std;
    
    map<char, double> aweight;
    
    int main()
    {
        int t, count, mflag;
        char c, molar;
        double molarmass;
    
        aweight['C'] = 12.01;
        aweight['H'] = 1.008;
        aweight['O'] = 16.00;
        aweight['N'] = 14.01;
    
        cin >> t;
        getchar();
        while(t--) {
            molarmass = 0.0;
    
            mflag = 0;
            count = 0;
            while((c=getchar()) != '
    ' && c != EOF) {
                if(isalpha(c)) {
                    if(mflag)
                        molarmass += ((count==0) ? 1 : count) * aweight[molar];
                    molar = c;
                    count = 0;
                    mflag = 1;
                } else if(isdigit(c))
                    count = count * 10 + c - '0';
            }
            if(mflag)
                molarmass += ((count==0) ? 1 : count) * aweight[molar];
    
    
            // 输出结果
            if(mflag)
                printf("%.3f
    ", molarmass);
        }
    
        return 0;
    }


  • 相关阅读:
    直接插入排序
    直接选择排序
    冒泡排序
    归并排序
    进程调度
    进程与线程
    c语言struct和c++struct的区别
    二叉搜索树、AVL平衡二叉搜索树、红黑树、多路查找树

    6-11 先序输出叶结点
  • 原文地址:https://www.cnblogs.com/tigerisland/p/7564544.html
Copyright © 2020-2023  润新知