zoukankan      html  css  js  c++  java
  • 【自己的小玩具程序】化学方程式配平【测试中】【未完成】

    化学元素周期表(Element.txt):

    1    H    氢    1
    2    He    氦    4
    3    Li    锂    7
    4    Be    铍    9
    5    B    硼    11
    6    C    碳    12
    7    N    氮    14
    8    O    氧    16
    9    F    氟    19
    10    Ne    氖    20
    11    Na    钠    23
    12    Mg    镁    24
    13    Al    铝    27
    14    Si    硅    28
    15    P    磷    31
    16    S    硫    32
    17    Cl    氯    35.5
    18    Ar    氩    40
    19    K    钾    39
    20    Ca    钙    40
    21    Sc    钪    45
    22    Ti    钛    48
    23    V    钒    51
    24    Cr    铬    52
    25    Mn    锰    55
    26    Fe    铁    56
    27    Co    钴    59
    28    Ni    镍    59
    29    Cu    铜    64
    30    Zn    锌    66
    31    Ga    镓    70
    32    Ge    锗    73
    33    As    砷    75
    34    Se    硒    79
    35    Br    溴    79
    36    Kr    氪    84
    37    Rb    铷    86
    38    Sr    锶    88
    39    Y    钇    89
    40    Zr    锆    91
    41    Nb    铌    93
    42    Mo    钼    96
    43    Tc    锝    98
    44    Ru    钌    101
    45    Rh    铑    103
    46    Pd    钯    107
    47    Ag    银    108
    48    Cd    镉    113
    49    In    铟    115
    50    Sn    锡    119
    51    Sb    锑    122
    52    Te    碲    128
    53    I    碘    127
    54    Xe    氙    131
    55    Cs    铯    133
    56    Ba    钡    137
    57    La    镧    139
    58    Ce    铈    140
    59    Pr    镨    141
    60    Nd    钕    144
    61    Pm    钷    145
    62    Sm    钐    151
    63    Eu    铕    152
    64    Gd    钆    157
    65    Tb    铽    159
    66    Dy    镝    163
    67    Ho    钬    165
    68    Er    铒    167
    69    Tm    铥    169
    70    Yb    镱    173
    71    Lu    镥    175
    72    Hf    铪    179
    73    Ta    钽    181
    74    W    钨    184
    75    Re    铼    186
    76    Os    锇    190
    77    Ir    铱    192
    78    Pt    铂    195
    79    Au    金    197
    80    Hg    汞    201
    81    Tl    铊    205
    82    Pb    铅    207
    83    Bi    铋    209
    84    Po    钋    209
    85    At    砹    210
    86    Rn    氡    222
    87    Fr    钫    223
    88    Ra    镭    226
    89    Ac    锕    227
    90    Th    钍    232
    91    Pa    镤    231
    92    U    铀    238
    93    Np    镎    237
    94    Pu    钚    244
    95    Am    镅    243
    96    Cm    锔    247
    97    Bk    锫    247
    98    Cf    锎    251
    99    Es    锿    252
    100    Fm    镄    257
    101    Md    钔    258
    102    No    锘    259
    103    Lr    铹    262
    104    Rf    鑪    261
    105    Db    钅杜    270
    106    Sg    钅喜    273
    107    Bh    钅波    274
    108    Hs    钅黑    272
    -1    

    [未完成的代码请多指教]:

    #include<stdio.h>
    #include<stdlib.h>
    #include<math.h>
    #include<string.h>
    typedef struct Element//元素信息
    {
        int An;//原子序数
        double Ar;//相对原子质量
        char name_CN[3];//中文名字
        char symbol[4];//元素符号
    }Ele;
    struct Material//化学式信息
    {
        int hxjls;//化学计量数
        int e[30];//元素的原子序数
        int num[30];//元素原子在化学式中所占个数
        int tot;//有多少个元素
    };

    Ele map[120];
    struct Material in[16],out[16];
    int in_num=0,out_num=0;//有多少个反应物/生成物
    void PutSingleMaterial(struct Material *input)
    {
        
        return ;
    }
    void ReadSingleMaterial(struct Material *input,char first)//用来进行单个化学式的输入
    {
        char ch=first;
        char SElt[4];//Single Element单个元素
        int i,i_SElt;
        
        input->hxjls=0;//清零化学计量数
        while('0'<=ch&&ch<='9')//ch是化学计量数的一部分
        {
            input->hxjls*=10;
            input->hxjls+=ch-'0';
            scanf("%c",&ch);
        }
        
        input->tot=0;
        while(ch!='+'&&ch!='=')//输入的是化学式
        {
            
            i_SElt=0;
            while( ('A'<=ch&&ch<='Z') || ('a'<=ch&&ch<='z') )//ch属于元素部分
            {
                SElt[i_SElt]=ch;
                i_SElt++;
                scanf("%c",&ch);
            }
            SElt[i_SElt]='';
            for(i=1;i<=108;i++)//匹配,确定元素原子序数
            {
                if(strcmp(SElt,map[i].symbol)==0)
                {
                    input->e=i;
                }
            } //元素输入结束
            
            while('0'<=ch&&ch<='9')//ch是元素原子个数的一部分
            {
                input->num[input->tot]=input->num[input->tot]*10+ch-'0';
                scanf("%c",&ch);
            }
            
            input->tot++;
        }
        
        return ;
    }
    void PreLoad()//Stands for the edit
    {
        int i;
        FILE *ein;
        char ch;
        ein=fopen("Element.txt","r");
        //输入元素周期表
        for(i=1;i<=108;i++)
        {
            fscanf(ein,"%d",&map[i].An);
            fscanf(ein,"%c",&ch);
            
            fscanf(ein,"%s",map[i].symbol);
            fscanf(ein,"%c",&ch);
            
            fscanf(ein,"%s",map[i].name_CN);
            fscanf(ein,"%c",&ch);
            
            fscanf(ein,"%lf",&map[i].Ar);
            fscanf(ein,"%c",&ch);
        }
        fscanf(ein,"%c",&ch);
        //Completed!!!
        
        //输入化学方程式
        struct Material *p;//它将指向当前所需要输入的化学式
        scanf("%c",&ch);
        while(ch!='=')// 输入反应物群
        {
            in[in_num].tot=0;//单个反应物元素个数初始化
            p=&in[in_num];//将p指向当前所需输入的化学式
            ReadSingleMaterial(p,ch);//进行单个化学式的输入
            //PutSingleMaterial(p);
        }
        
        
        return ;
    }
    int main()//化学方程式配平
    {
        PreLoad();
        return 0;
    }

  • 相关阅读:
    ios开发-2015-07-19
    ios开发-2015-07-18
    ios开发-2015-07-17
    ios开发-2015-07-16
    ios开发-2015-07-15
    ios开发-2015-07-14
    ios开发-2015-07-13
    Selenium源码分析之WebDriver
    webdriver实现原理 分类: Selenium 2015-07-16 00:16 11人阅读 评论(0) 收藏
    webdriver实现原理
  • 原文地址:https://www.cnblogs.com/CXSheng/p/4941075.html
Copyright © 2011-2022 走看看