没什么难的就是注意一下那个集合的表达式就好了。`
还有就是对字母和数字的判断,好像没有办法直接判断数字,那就两个组合判断。映射的初始化好像要放在函数内部?
#include<iostream>
#include<algorithm>
#include<map>
#include<cctype>
using namespace std;
map<char, double>s;
int main() {
s['C'] = 12.01;
s['H'] = 1.008;
s['O'] = 16.00;
s['N'] = 14.01;
double sum = 0;
char ch;
cin >> ch;
char b;
int d = 0;
while (cin >> b)
{
if (isalpha(b))
{
if (d != 0)
sum += s[ch] * d;
else sum += s[ch];
ch = b;
d = 0;
}
if (isalnum(b) && !isalpha(b))
{
int g = d * 10;
d =g+b-'0';
//b本身就是字符不能打单引号
}
cout << sum << endl;
}
if (d == 0)
sum += s[ch];
else sum += s[ch] * d;
cout << sum << endl;
return 0;
}