给你一个只含CHON的有机物的化学式如C6H5OH求相对分子质量
。。。
#include<cstdio>
#include<cctype>
int t;
double w,m[5]= {12.01,1.008,16.00,14.01};
char s[100];
void add(int f,int i)
{
if(isdigit(s[i+1]))
if(isdigit(s[i+2]))
w+=m[f]*((s[i+1]-'0')*10+s[i+2]-'0');
else w+=m[f]*(s[i+1]-'0');
else w+=m[f];
}
int main()
{
scanf("%d ",&t);//注意这里%d后面有个空格,这样就不怕后面读到回车啦
while(t--)
{
scanf("%s",s);
w=0;
for(int i=0; s[i]; i++)
{
switch(s[i])
{
case 'C':
add(0,i);
break;
case 'H':
add(1,i);
break;
case 'O':
add(2,i);
break;
case 'N':
add(3,i);
break;
default:break;
}
}
printf("%.3lf\n",w);
}
return 0;
}
#include<cstdio>
#include<cctype>
int t;
double w,m[5]= {12.01,1.008,16.00,14.01};
char p[5]="CHON";
char s[100];
void add(int f,int i)
{
if(isdigit(s[i+1]))
if(isdigit(s[i+2]))
w+=m[f]*((s[i+1]-'0')*10+s[i+2]-'0');
else w+=m[f]*(s[i+1]-'0');
else w+=m[f];
}
int main()
{
scanf("%d ",&t);//注意这里%d后面有个空格,这样就不怕后面读到回车啦
while(t--)
{
scanf("%s",s);
w=0;
for(int i=0; s[i]; i++)
for(int j=0; j<4; j++)
if(s[i]==p[j])add(j,i);
printf("%.3lf\n",w);
}
return 0;
}