- 题目链接:https://vjudge.net/problem/UVA-1586
- 解题思路:略;
- AC截图:
- AC代码:
#include<stdio.h>
#include<ctype.h>
int main(){
int T;
scanf("%d",&T);
char s[50];
while(T--){
scanf("%s",s);//读取字符串
getchar();
int i=0;double M=0;double m=0;//M表示要求的总相对分子质量,m表示当前元素的相对分子质量
for(i=0;s[i];i++){
if(s[i]=='C')m=12.01;
else if(s[i]=='N')m=14.01;
else if(s[i]=='O')m=16;
else if(s[i]=='H')m=1.008;
else continue;//如果是数字直接跳过后面的if判断
if(isdigit(s[i+1])){
if(isdigit(s[i+2]))M+=m*((s[i+1]-'0')*10+(s[i+2]-'0'));//看看第二位是否是数字
else M+=m*(s[i+1]-'0');
}
else M+=m;
}
printf("%.3f\n",M);
}
}
以上代码也许还不是很好,欢迎朋友评论以交流和分享更优秀的代码。