算法入门经典P57-习题3-2(化学分子式分子量的计算)

#include<iostream>
#include<string.h>
#include<ctype.h>
using namespace std;
int main(){
    double score = 0,data[] = {12.01,1.008,16.00,14.01};
    char data_c[] = {'C','H','O','N'};
    char s[105],s_c[50];
    int s_num[50];
    scanf("%s",s);
    int i,j = 0,k = 0,len = strlen(s);
    memset(s_num,0,sizeof(s_num));
    for(i=0;i<len;i++){
        if(isalpha(s[i])){
            if(i>0&&isalpha(s[i-1])){
                s_c[j++] = s[i];
                s_num[k++] = 1;
            }
            else{
                s_c[j++] = s[i];
            }
        }
        else{
            int temp = s[i]-'0';
            while(i+1<len&&isdigit(s[i+1])){
                temp *= 10;
                temp += s[i+1]-'0';
                i++;
            }
            s_num[k++] = temp;
        }
    }
    if(s_num[k]==0){
        s_num[k] = 1;
        k++;
    }
    for(i=0;i<j;i++){
        for(k=0;k<4;k++){
            if(s_c[i]==data_c[k]){
                score += data[k] * s_num[i]; 
            }
        }
    }
    printf("%lf\n",score);
    return 0;
}

 

posted @ 2021-11-03 16:18  智人心  阅读(129)  评论(0)    收藏  举报