UVA - 1586 Molar Mass

来源:互联网 发布:淘宝直通车养词要多久? 编辑:程序博客网 时间:2024/05/20 02:56

题目大意:给出只含 C,H,O,N 的分子,求分子量。

解题思路:找到原子,提取原子后的数字即原子个数,乘原子量再相加即可。字符减去 ‘0’ 化为对应数字,连续数字乘以 10 进位后再加。

 #include<stdio.h> #include<string.h> using namespace std; char s[100]; int num(int i) {     int n=1;     if(s[i]>='0'&&s[i]<='9') n=0;     while(s[i] >= '0' && s[i] <= '9'){         n = n * 10 + ( s[i] - '0' );         i++;     }     return n; } int main(){     int T;     scanf("%d",&T);     while(T--){         memset(s,'0',sizeof(s));         scanf("%s",s);         double tag=0,sum=0;         for(int i=0; i<strlen(s); i++){             if(s[i]=='C') {tag=12.01; sum+=tag*num(i+1);}             if(s[i]=='H') {tag=1.008; sum+=tag*num(i+1);}             if(s[i]=='O') {tag=16.00; sum+=tag*num(i+1);}             if(s[i]=='N') {tag=14.01; sum+=tag*num(i+1);}         }         printf("%.3f\n",sum);     }     return 0; }
0 0