课后题--------求分子量-----Molar mass------
简单的化学式 求分子量问题 下面附上 代码和解析.
1 #include<stdio.h> 2 #include<algorithm> 3 #include<string.h> 4 #include<math.h> 5 using namespace std ; 6 int main() 7 { 8 double l,m,n,t,sum,w; 9 int i,q; 10 char a[200]; 11 scanf("%lf",&t); 12 while(t--) 13 { 14 w=m=0; 15 scanf("%s",a); 16 l=strlen(a); 17 for(sum=i=0;i<l;i++) 18 { 19 q=n=0; 20 if(!(a[i]-'0'>=0&&a[i]-'0'<=9)) //当 这次不是数字 越界的时候 也不是数字哦. 21 { 22 if(a[i]=='C') 23 m=12.01; 24 else 25 if(a[i]=='H') 26 m=1.008; 27 else 28 if(a[i]=='O') 29 m=16; 30 else 31 if(a[i]='N') 32 m=14.01; 33 n=1; //用于处理 当这个化学元素没有后缀时的情况 34 } 35 if(a[i+1]-'0'>=0&&a[i+1]-'0'<=9) //有后缀时. 36 { 37 i++; 38 n=0; 39 while(a[i]-'0'>=0&&a[i]-'0'<=9) 40 { 41 n=n*pow(10,q)+(a[i]-'0'); 42 q++; 43 if(!(a[i+1]-'0'>=0&&a[i+1]-'0'<=9)) 44 break; 45 i++; 46 } 47 } 48 sum=sum+m*n; 49 } 50 printf("%.3lf\n",sum); 51 } 52 return 0; 53 }