小紫书 习题 3-2(UVA 1586) 分子量(Molar mass)

来源:互联网 发布:阿里云服务器初始密码 编辑:程序博客网 时间:2024/05/14 04:57

AC代码:

#include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>using namespace std;char word[1000];double sum=0;int flag=0,cnt=0;double m[5]={0,12.01,1.008,16.00,14.01};//0CHNOvoid compute(char a){    switch(a)    {    case 'E':    if(cnt!=0)        {        cnt--;            sum+=m[flag]*cnt;        }        break;    case 'C':        if(cnt!=0)        {        cnt--;            sum+=m[flag]*cnt;        }        cnt=0;        flag=1;        sum+=m[flag];        break;    case 'H':        if(cnt!=0)        {        cnt--;            sum+=m[flag]*cnt;        }        cnt=0;        flag=2;        sum+=m[flag];        break;    case 'O':        if(cnt!=0)        {        cnt--;            sum+=m[flag]*cnt;        }        cnt=0;        flag=3;        sum+=m[flag];        break;    case 'N':        if(cnt!=0)        {        cnt--;            sum+=m[flag]*cnt;        }        cnt=0;        flag=4;        sum+=m[flag];        break;    default:        if(a>='0'&&a<='9')        {            cnt=cnt*10+a-'0';        }        break;    }//    cout<<sum<<endl;}int main(){    int t;    scanf("%d",&t);    while(t--)    {        scanf("%s",word);        sum=0;cnt=0;        int n=strlen(word);        word[n++]='E';word[n]='\0';        for(int i=0;i<n;i++)        {            compute(word[i]);        }        printf("%.3f\n",sum);    }//    system("pause");    return 0;}


0 0
原创粉丝点击