侧边栏
首页代码

习题3-2 分子量(Molar Mass, ACM/ICPC Seoul 2007, UVa1586)

#include<stdio.h>
#include<string.h>
#include<ctype.h>
double getweight(char x)
{
    double m=0;
    switch(x){
        case 'C':m=12.01;break;
        case 'H':m=1.008;break;
        case 'O':m=16.00;break;
        case 'N':m=14.01;break;
    }
    return m;
}

int main()
{
    int T;
    scanf("%d",&T);
    while(T--){
        char s[100];
        scanf("%s",s);
        int i;
        double t = 0;
        int len = strlen(s);
        for(i = 0;i < len;i++){
            if(isalpha(s[i]) && isdigit(s[i + 1]) && isdigit(s[i + 2]))
                t += getweight(s[i])*((s[i+1]-'0')*10 + (s[i + 2]-'0'));
            else if(isalpha(s[i]) && isdigit(s[i + 1]))
                t += getweight(s[i])*(s[i+1] -'0');
            else if(isalpha(s[i]) && (!isdigit(s[i+1])))
                t += getweight(s[i]);
        }
        printf("%.3f\n",t);
        t = 0;
    }
    return 0;
}

1.字符串中的数字要减去0才可以计算

posted @ 2020-09-23 11:16  AlexStraightUp  阅读(111)  评论(0)    收藏  举报
页脚HTML代码