首页 > 代码库 > 紫书 习题3-2 分子量(字符串,常量数组)

紫书 习题3-2 分子量(字符串,常量数组)

#include<stdio.h>#include<string.h>int main(){    int t,i,num;    char a[]={‘C‘,‘H‘,‘O‘,‘N‘};    double n[]={12.01,1.008,16.00,14.01};//此所谓之常量数组的妙用    char s[105];    double sum;    scanf("%d",&t);    while(t--)    {        sum=0;//每次多组数据输入时sum复位        scanf("%s",s);        for(i=0;i<strlen(s);i++)        {            if(s[i+1]>=‘0‘&&s[i+1]<=‘9‘)//字符后面带数字            {                if(s[i+2]>=‘0‘&&s[i+2]<=‘9‘)//带了两位数字                {                    num=10*(s[i+1]-‘0‘)+(s[i+2]-‘0‘);                }                else//带了一位数字                    num=s[i+1]-‘0‘;            }            else//不带数字                num=1;                     if(s[i]==a[0]) sum += num*n[0];                else if(s[i]==a[1]) sum += num*n[1];                else if(s[i]==a[2]) sum += num*n[2];                else if(s[i]==a[3]) sum += num*n[3];        }        printf("%.3f\n",sum);    }    return 0;}

  

#include <stdio.h>#include <string.h>int main(){    double d[200];    int n,sum,i;    double w;    char c,a[1000];    d[‘C‘]=12.01;    d[‘H‘]=1.008;    d[‘O‘]=16.00;    d[‘N‘]=14.01;  //常量数组的妙用    scanf("%d",&n);    while(n--)    {        i=0;        w=0;        scanf("%s",a);        while(a[i]!=‘\0‘)        {            sum=0;            c=a[i];            i++;            while(a[i]>=‘0‘ && a[i]<=‘9‘) //判断字符后面有多少数字的            {                sum=sum*10+a[i]-‘0‘;    //sum为数字大小/包括数字占后面1,2,3···位的                i++;                   //往后遍历是否有数字            }            if(sum)                  //若字符后面有数字,分子量=分子数*单位原子质量                w+=sum*(d[c]);            else                    //若字符后面无数字                w+=(d[c]);        }        printf("%.3f\n",w);    }    return 0;}/*解题思路:1.将分子量用double 数组记录下来2.将字符串存储在字符数组中,从头向后扫描,一直记住“字母”,对下一个字符进行判断,是否是数字,如果是数字:用一个整数记录,本代码中用的sum,同时下标++。  进行判断,查看是否对数字进行了记录,即查看sum是否进入了while循环并被赋值,如果没有被赋值,说明下一个字符不是数字,直接对W(总记录)值进行赋值,为当前字符的权值(分子量),即double数组的中的值。如果被赋值,说明字符后面是一个数字,sum中存放了该“数字”,也是对w赋值,不过此时是赋sum倍的当前字符的权值(分子量)。3.最后整个字符串循环完毕,输出总记录W即可。*/

  

紫书 习题3-2 分子量(字符串,常量数组)