题目描述:分子量问题,给出一个物质的分子式,求分子量,本题中的分子式只包括4种原子,分别为C,H,O,N
原子量分别为12.01,1.008,16.00,14.01例如,C6H5OH的分子量94.108g/mol.
在num函数上面花费了较多时间,主要是函数不够熟悉。
#include<stdio.h>
#include<string.h>
#include<ctype.h>
#include<stdlib.h>
#define maxn 85
int num(int pos,char *s)
{
int n=0,count=pos;
char dest[8]="";
char str[8]="";
while(isdigit(s[count+1]))
{
count++;
n++;
}
strcat(dest,strncpy(str,s+pos+1,n));
int res=strcmp(dest,"");
if(res==0)
{
return 1;
}else
{
return atoi(dest);
}
}
int main()
{
int T;
char s[maxn];
scanf("%d",&T);
while(T--)
{
scanf("%s",s);
int n=strlen(s);
float sum=0;
for(int i=0; i<n; i++)
{
switch(s[i])
{
case 'C':
{
sum+=num(i,s)*12.01;
}
break;
case 'H':
{
sum+=num(i,s)*1.008;
}
break;
case 'O':
{
sum+=num(i,s)*16.00;
}
break;
case 'N':
{
sum+=num(i,s)*14.01;
}
break;
}
}
printf("%.3f\n",sum);
}
return 0;
}