(UVA)1586 --Molar Mass(分子量)

题目链接:http://vjudge.net/problem/UVA-1586

思路:统计一个分子式中CHON出现的总次数,乘上相对原子量后求和。要注意的是CH4这样的C后面的1默认不出现,以及C4H10这样的后面的数字是两位的情况。

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstring>
 4 using namespace std;
 5 
 6 int main()
 7 {
 8     int t,len;
 9     double c,h,o,n;
10     char s[80];
11     scanf("%d",&t);
12     while(t--)
13     {
14         scanf("%s",s);
15         len = strlen(s);
16         int i=0,num=0;
17         c=0; h=0; o=0; n=0;
18         while(i<len)
19         {
20             if(s[i]>='A'&&s[i]<='Z')
21             {
22                 if (s[i+1]>='0'&&s[i+1]<='9')
23                 {
24                 num=num*10+s[i+1]-'0';
25                 if (s[i+2]>='0'&&s[i+2]<='9')
26                     num=num*10+s[i+2]-'0';
27                 }else num=1;
28             if(s[i]=='C') c+=num;
29             if(s[i]=='H') h+=num;
30             if(s[i]=='O') o+=num;
31             if(s[i]=='N') n+=num;
32             num=0;
33             }
34             i++;
35         }
36         printf("%.3lf
",c*12.01+h*1.008+o*16.00+n*14.01);
37     }
38     return 0;
39 }
View Code
原文地址:https://www.cnblogs.com/ACDoge/p/6127974.html