计算分子式的分子量,其中原子量C,H,O,N,分别为12.01,1.008,16.00,14.01
例如C6H5OH,一开始想得太简单了,其实要稍微复杂点,数字不一定是个位数。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
int i,j;
double sum=0,t=0;//tÊý×Ö
char s[100];
scanf("%s",s);
for(i=0;i<strlen(s);i++){
t=0;
switch(s[i])
{
case 'C':
if(s[i+1]>'0'&&s[i+1]<'9'){
for(j=i+1;j<strlen(s);j++){
if(s[j]>'0'&&s[j]<'9')
t=t*10+s[j]-'0';
else break;
}
sum+=12.01*t;
}
else sum+=12.01;
break;
case 'H':
if(s[i+1]>'0'&&s[i+1]<'9'){
for(j=i+1;j<strlen(s);j++){
if(s[j]>'0'&&s[j]<'9')
t=t*10+s[j]-'0';
else break;
}
sum+=1.008*t;
}
else sum+=1.008;
break;
case 'O':
if(s[i+1]>'0'&&s[i+1]<'9'){
for(j=i+1;j<strlen(s);j++){
if(s[j]>'0'&&s[j]<'9')
t=t*10+s[j]-'0';
else break;
}
sum+=16.00*t;
}
else sum+=16.00;
break;
case 'N':
if(s[i+1]>'0'&&s[i+1]<'9'){
for(j=i+1;j<strlen(s);j++){
if(s[j]>'0'&&s[j]<'9')
t=t*10+s[j]-'0';
else break;
}
sum+=14.01*t;
}
else sum+=14.01;
break;
default:
break;
}
}
printf("%.3f\n",sum);
return 0;
}