分析:读第一个字符肯定为字母,创建一个数组保存化学式个元素分量的质量,最后加起来即可
#include <stdio.h>
#define MAXN 20
int main()
{
double mass = 0.0;
char element = '\0';
double num[MAXN] = {0};//存放元素的质量,数组的和为化学式的质量
int now = 0;//数组的标志位,置为0
while ( (element = getchar() )!='\n')
{
if (element>='A'&&element<='Z')
{
switch (element)
{
case 'C':
num[now] += 12.01;
now++;
break;
case 'H':
num[now] += 1.008;
now++;
break;
case 'O':
num[now] += 16.00;
now++;
break;
case 'N':
num[now] += 14.01;
now++;
break;
default:
break;
}
}
else if (element >= '1'&&element <= '9')
{
num[now - 1] *= (double)(element-48);
}
else
printf("输入不正确\n");
}
for (int i = 0; i <=now; i++)
{
mass += num[i];
}
printf("分子量为 %.3f g/mol", mass);
getchar();
return 0;
}