uva1586molar mass字母和数

题意:给出一种物质的分子式(不带括号),求分子量。本题中的分子式只包含4种原子,分别为C,H,O,N,原子量分别为12.01,1.008,16.00,14.01(单位:g/mol).

思路:做题时没注意到数字最多2位。

#include<cstdio>
#include<string.h>
#include<ctype.h>
#include<cstring>
#include<iostream>
using namespace std;

char x[300];

double mass(char a)
{
    if(a=='C') return 12.01;
    if(a=='H') return 1.008;
    if(a=='O') return 16.00;
    if(a=='N') return 14.01;
}
void solve()
{
    int len=strlen(x);
    double sum=0.0,m;
    x[len]='E';
    for(int i=0;i<len;i++)
    {
        if(x[i]>'0'&&x[i]<='9')
        {
            if(x[i-1]>'0'&&x[i-1]<='9')continue;
            else
            {
                if(x[i+1]>'0'&&x[i+1]<='9')sum+=(((int)(x[i]-'0'))*10+(((int)((x[i+1])-'0'))-1))*m;
                else sum+=m*(((int)(x[i]-'0'))-1);
            }
        }
        else
        {
            m=mass(x[i]);
            sum+=m;
        }
    }
    printf("%.3lf\n",sum);
}
int main()
{
    int t;
    scanf("%d",&t);
    while(t--)
    {
        scanf("%s",x);
        solve();
        memset(x,0,sizeof(x));
    }
    return 0;
}

 

posted @ 2016-05-07 10:40  哲贤  阅读(122)  评论(0编辑  收藏  举报