【UVa】[1586]Molar mass

这里写图片描述
题目英文说的很复杂
其实就是给一个分子式求它的分子量

读取字母判断原子量
需要注意CO、H2O等原子量为1的情况
(话说在下终于会用markdown写下标了)

在这里也是给自己加了点难度
用了递归的函数来查找原子个数

写的过程中也是遇到了点状况
好在最后还是一次AC了

#include<stdio.h>
#include<string.h>
int t,l;
char s[100];
int find(int m) {
    if((s[m+1]>'A'&&s[m+1]<'Z')||(m+1==l)) {
        if(t==0)
            t=1;
        return t;
    } else {
        t=t*10+s[m+1]-'0';
        return find(++m);
    }
}
int main() {
    int n;
    double sum;
    scanf("%d",&n);
    while(n--) {
        scanf("%s",s);
        l=strlen(s);
        for(int i=sum=0; i<l; i++) {
            if(s[i]=='C') {
                t=0;
                sum+=12.01*find(i);
            } else if(s[i]=='H') {
                t=0;
                sum+=1.008*find(i);
            } else if(s[i]=='O') {
                t=0;
                sum+=16.00*find(i);
            } else if(s[i]=='N') {
                t=0;
                sum+=14.01*find(i);
            } else
                continue;
        }
        printf("%.3lf\n",sum);
    }
    return 0;
}

题目地址:【UVa】[1586]Molar mass

原文地址:https://www.cnblogs.com/BoilTask/p/12569930.html