分子量
一.题目
给出一种物质的分子式(不带括号),求分子量。本题中的分子式只包含4种原子,分别为C, H, O, N,原子量分别为12.01, 1.008, 16.00, 14.01(单位:g/mol)
二.分析
难点:在字符串中分离出数字和字符
一个个利用i+1去识别,识别到了就i++,没有就不变i
三.代码
#include <stdio.h>
#include<string.h>
//0的ascii 为48
char s[1000];
int main ()
{
char temc; // 元素
int temi=1; // 元素对应的个数
double sum=0; //分子总数
double temM=0; //分子量
gets(s);
int i=0;
temc = s[i];
while(temc!='\0')
{
temi = 1;
switch(temc)
{
case 'C':temM=12.01;break;
case 'H':temM = 1.008;break;
case 'O':temM = 16.00;break;
case 'N':temM = 14.01;break;
}
if(s[i+1]<='9'&&s[i+1]>='0') //是数字
{
i++;
temi = s[i]-'0';
while(s[i+1]>='0'&&s[i+1]<='9') //计算总分子量
{
temi*=10;
temi+=(s[i+1]-'0');
i++;
}
}
sum += temi*temM;
temc = s[++i];
}
printf("%.3f",sum);
return 0;
}