水题,但是作为刚看完CPrimer的萌新调试了半个小时
AC代码如下:
#include<stdio.h>
#include<string.h>
#include<ctype.h>
char a[]="NCOH";
double b[]={14.01,12.01,16.00,1.008};
char str[85];
int main(void){
int T;
scanf("%d",&T);
while(T--){
double sum=0.0;
memset(str,'A',sizeof(str));
scanf("%s",str);
int n=strlen(str);
for(int i=0;i<n;i++){
int num=0,sign=0;
for(int k=i+1;!isupper(str[k])&&k<n;k++){
num=num*10+str[k]-'0';
sign++;
}
if(!num) num=!num;
for(int j=0;j<4;j++){
if(str[i]==a[j])
sum+=b[j]*num;
}
i+=sign;
}
printf("%.3f\n",sum);
}
return 0;
}