题目链接: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 }