P57 分子量
Posted 远山笑你。
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了P57 分子量相关的知识,希望对你有一定的参考价值。
#include<bits/stdc++.h> using namespace std; double f(char a) { if(a==‘C‘) return 12.01; if(a==‘H‘) return 1.008; if(a==‘O‘) return 16.00; if(a==‘N‘) return 14.01; } int main() { /* 从前面开始算: t=0; t = t*10+(c[i]-‘0‘); */ char a[100]; gets(a); int sum=0; double ans=0; int t=1; for(int i=strlen(a)-1; i>=0; i--) { sum=0; t=1; while(1) { if(!isalpha(a[i])) { sum+=(a[i--]-‘0‘)*t; t*=10; } else { if(sum==0) ans+=(f(a[i])); else ans+=(f(a[i])*sum); break; } } } printf("%.3f",ans); return 0; }
我的思路是从后面开始遍历整个数组。
从前面开始遍历的话,有一个公式需要掌握:
t=0;
t=t*10+(c[i]-‘0‘);
实现数字的处理。
#include<bits/stdc++.h>using namespace std;double f(char a){ if(a==‘C‘) return 12.01; if(a==‘H‘) return 1.008; if(a==‘O‘) return 16.00; if(a==‘N‘) return 14.01;}int main(){ /* 从前面开始算: t=0; t = t*10+(c[i]-‘0‘); */ char a[100]; gets(a); int sum=0; double ans=0; int t=1; for(int i=strlen(a)-1; i>=0; i--) { sum=0; t=1; while(1) { if(!isalpha(a[i])) { sum+=(a[i--]-‘0‘)*t; t*=10; } else { if(sum==0) ans+=(f(a[i])); else ans+=(f(a[i])*sum); break; } } } printf("%.3f",ans); return 0;}
以上是关于P57 分子量的主要内容,如果未能解决你的问题,请参考以下文章