C语言小白硬解算法竞赛入门3-2习题

 给出一种物质的分子式(不带括号),求分子量。本题中的分子式只包含4种原子,分别为C,H,O,N,原子量分贝为12.01,1.008,16.00,14.01(单位:g/mol)。例如,C6H5OH的分子量为94.108g/mol。

#include
#include
#include
#define LEN 100
char s[LEN];
char temp[LEN];
int main(){
     int k;
     double sum=0;
     scanf("%s",s);
   for(int i=0;i             //判断是字母
           if(isalpha(s[i])){
                k=0;
              for(int j=i+1;j                  //判断是数字
               if(!(isalpha(s[j]))){
                  temp[k]=s[j];
                   k++;                
               }
               else{
                 temp[k]='\0';
                 break;
               }              
             }
          }
       //接下来就开始算了           
           double sumx=0;
           double multiple=1;
           for(int m=strlen(temp)-1,multiple=1;m>=0;m--){
                  sumx += (temp[m]-'0')*multiple;
                  multiple *= 10;
           }
          if(sumx==0){
              sumx=1;
          }    
         if(s[i]=='C'){
          sumx *= 12.01;
         }else if(s[i]=='H'){
          sumx *= 1.008;    
         }else if(s[i]=='O'){
             sumx *= 16.00;
         }else{
             sumx *= 14.01;
         }
            sum += sumx;
        i += k+1;     
   }    
    printf("%.3fg/mol\n",sum);
    return 0;    
}

你可能感兴趣的:(算法,c语言,c++)