大意是给你一个分子式,让你求分子量
分子式的话只有四种元素
思路还是挺清晰的
每次碰到一个字母的时候找出对应原子量
然后如果是字母就直接加到总的上面去
如果是数字就一个一个读取并计算数字实际的值
#include<stdio.h>
using namespace std;
int main(){
int n;
char a[105];
scanf("%d",&n);
while(n-- && ~scanf("%s",&a)){
const double c=12.01,h=1.008,o=16.00,n=14.01;
double ans=0;
double p=0;
int k=0;
for(int i=0;a[i]!='\0';i++){
if(a[i]==' ')
continue;
if('0'<=a[i] && a[i]<='9'){
k=k*10+a[i]-'0';
}
else{
if(k!=0)
ans+=p*k;
else
ans+=p;
k=0;
switch(a[i]){
case 'C':
p=c;
break;
case 'H':
p=h;
break;
case 'O':
p=o;
break;
case 'N':
p=n;
break;
default:
break;
}
}
}
if(k!=0)
ans+=p*k;
else
ans+=p;
printf("%.3lf\n",ans);
}
return 0;
}
差不多就这样
交错代码RE一次我也是。。。
Orz
-----------------------我也不知道这是什么的分界线-------------------------------
那四个常量多余了,写的时候思路不清晰造成的代码冗余