给出一种物质的分子式(不带括号),求分子量。本题中的分子式只包含4种原子,分 别为C, H, O, N,原子量分别为12.01, 1.008, 16.00, 14.01(单位:g/mol)。例如,C6H5OH的 分子量为94.108g/mol。
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include<string.h>
#include<ctype.h>
char arr[20];
int main()
{
int g=0,i = 0,len1 = 0,len2=0,Sum=0,mol=0;
scanf("%s", arr);
for (i = 0;arr[i]!='\0'; i++)//遍历整个字符串
{
if (isalpha(arr[i]))//判断第i个是什么字母
{
if (arr[i] == 'C') g = 12;
if (arr[i] == 'H') g = 1;
if (arr[i] == 'O') g = 16;
if (arr[i] == 'N') g = 14;
}
else continue;//不是字母就跳过本次循环
int p = i + 1;//检查下一个字符是不是字母
for (p;arr[p]>='0'&&arr[p]<='9'; p++)
{
Sum = Sum * 10 + arr[p]-'0';//得到某种原子的下标
}
if (Sum==0) { mol = mol + g; }//只有一个某种原子
else { mol = mol + Sum * g; }//有n个某种原子
Sum = 0; g = 0;
}
printf("%s的摩尔质量为", arr);
printf("%d g/mol\n", mol);
return 0;
}