@分子量
分子量*(Molar Mass)*
给出一种物质的分子式(不带括号),求分子量。本题的分子式只包含4种原子,分别为C,H,O,N。
若有较多原子,建议采用常量数组。这里我们仅用switch语句判断。对于遍历字符串来说while比较可观。
附上渣代码
#include<stdio.h>
#include<ctype.h>
#define maxn 100
int main ()
{
char str[maxn];//分子式
char ele; // 元素
int n=1; // 元素对应的个数
double sum=0; //分子总数
double M=0; //分子量
scanf("%s",str);
int i=0;
ele = str[i];
while(ele!='\0')//逐个分子计算
{
n = 1;
switch(ele)
{
case 'C':
M=12.01;
break;
case 'H':
M = 1.008;
break;
case 'O':
M = 16.00;
break;
case 'N':
M = 14.01;
break;
}
if(isdigit(str[i+1])) //判断是否为数字
{
i++;
n = str[i]-'0';
while(isdigit(str[i+1])) //计算总分子量
{
n*=10;
n+=(str[i+1]-'0');
i++;
}
}
sum += n*M;
ele = str[++i];
}
printf("%.3fg/mol",sum);
return 0;
}