您的位置:首页 > 其它

【UVa】[1586]Molar mass

2016-01-09 20:19 246 查看



题目英文说的很复杂

其实就是给一个分子式求它的分子量

读取字母判断原子量

需要注意CO、H2O等原子量为1的情况

(话说在下终于会用markdown写下标了)

在这里也是给自己加了点难度

用了递归的函数来查找原子个数

写的过程中也是遇到了点状况

好在最后还是一次AC了

[code]#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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: