本文主要介绍了分子量计算这道习题的解答。
文章目录
一、习题3-2简介
二、解答
代码如下:
#include<stdio.h>
#include<string.h>
#include<ctype.h> //isdigit函数的头文件,用于判断字符是否为'0'~'9'
int cnt(char*s, int i){
int n = 0;
if(isdigit(s[i+1]) && isdigit(s[i+2])){
n+=(s[i+1]-'0')*10+(s[i+2]-'0');
}
else{
n+=isdigit(s[i+1])?(s[i+1]-'0') : 1;
}
return n;
}
int main(){
double w[4]={12.01,1.008,16.00,14.01};//用于存储C、H、O、N的Mr
double sum;
int num[4];//用于统计各元素的个数
char s[85];
int T;
scanf("%d",&T);
while(T--){
sum=0; //注意置零
memset(num,0,sizeof(num));//注意置零
scanf("%s",s);
for(int i=0;i<strlen(s);i++){
if(s[i]=='C') num[0]+=cnt(s,i);
if(s[i]=='H') num[1]+=cnt(s,i);
if(s[i]=='O') num[2]+=cnt(s,i);
if(s[i]=='N') num[3]+=cnt(s,i);
}
for(int i=0;i<4;i++)
sum+=(w[i]*num[i]);
printf("%s的分子量为:%.3lfg/mol\n",s,sum);
}
return 0;
}