码迷,mamicode.com
首页 > 其他好文 > 详细

化学方程式配平【测试中】【未完成】

时间:2015-11-05 23:52:47      阅读:315      评论:0      收藏:0      [点我收藏+]

标签:

化学元素周期表(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]=‘\0‘;
        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;
}

化学方程式配平【测试中】【未完成】

标签:

原文地址:http://www.cnblogs.com/MicoTimlesCheng/p/4941075.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!