算法入门经典第二版 3-2 Molar Mass

来源:互联网 发布:淘宝楠楠家是洋垃圾 编辑:程序博客网 时间:2024/06/05 17:55
#include <stdio.h>#include <string.h>#include <math.h>int num[100000];char s[100000];double m[] = {12.01,1.008,16.00,14.01},mass;int i,n;void countMass(){    int cnt = 0,t;    memset(num,0,sizeof(num));    if(s[i] == 'C')            t = 0;    else if(s[i] == 'H')            t = 1;    else if(s[i] == 'O')            t = 2;    else            t = 3;    if(49 <= s[i+1] && s[i+1] <= 57)  //处理字符串数字    {        int sum = 0;        while(48 <= s[i+1] && s[i+1] <= 57 && i+1 < n)         { num[cnt++] = s[i+1] - 48;  i++;}        for(int j = 0; j < cnt; j++)        {            sum += num[cnt-1-j] * (int)(pow(10,j) + 0.05);             //printf("sum:%d,pow:%d \n",sum,(int)(pow(10,j) + 0.05));        }        mass += m[t] * sum;    }    else            mass += m[t];}int main(){    int T;    scanf("%d",&T);    while(T--) {        scanf("%s",s);        n = strlen(s);        mass = 0.0;        for(i = 0; i < n; i++)            countMass();        printf("%.3f\n",mass);    }}
阅读全文
0 0