您的位置:首页 > 其它

算典03_习题_02_Uva-1586

2017-02-13 17:07 253 查看

Molar mass

题解

计算相对分子质量

从字符串中抽取字符和数字

如果当前是字符,下一个还是字符(或者为最后一个字符),就是1份

其它的抽出数字再乘上即可

#include <cstdio>
#include <cctype>
#include <cstring>
#include <iostream>
using namespace std;
const int maxn = 1e2 + 5;
#define met(a,b) memset(a, b, sizeof(a));

double a[30];
char s[maxn];
int len;

int main(){
a['C' -'A'] = 12.01;
a['H' -'A'] = 1.008;
a['O' -'A'] = 16.00;
a['N' -'A'] = 14.01;

int t; cin>>t;
while(t--){
scanf("%s", s);
len = strlen(s);

double res = 0;
for(int i = 0; i < len;){
if(isalpha(s[i])){
double tmp = a[s[i] - 'A'], ans = 0;
++i;
if(isalpha(s[i]) || i == len){
res += tmp;
continue;
}

while(isdigit(s[i])){
ans *= 10;
ans += s[i] - '0';
++i;
}
res += ans*tmp;
}
}
printf("%.3f\n", res);

}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: