#include <iostream>
#include <cctype>
#include <stack>
using namespace std;
stack<int> sum;
int len;
struct Hua
{
string s;
int m;
}hua[1000005];
int find(string name)
{
for (int i = 1;i <= len;i++)
{
if (hua[i].s == name)
{
return hua[i].m;
}
}
return -1;
}
unsigned long long ans;
int main()
{
string s1, s2 = "";
int num = 0, n = 0;
while (cin >> s1)
{
if (s1 == "END_OF_FIRST_PART")
{
break;
}
len++;
for (int i = 0;i < s1.length();i++)
{
if (isalpha(s1[i]))
{
s2 += s1[i];
}
}
hua[len].s = s2;
for (int i = 0;i < s1.length();i++)
{
if (isdigit(s1[i]))
{
num = num * 10 + s1[i] - '0';
}
}
hua[len].m = num;
s2 = "";
num = 0;
}
string huaxue;
for (int i = 1;i <= len;i++)
{
cout << hua[i].s << " " << hua[i].m << endl;
}
return 0;
while (cin >> huaxue)
{
if (huaxue == "0")
{
break;
}
int zuo = 0;
string h = "";
for (int i = 0;i < huaxue.length() - 1;i++)
{
if (huaxue[i] == '(')
{
ans += sum.top();
sum.pop();
zuo++;
}
else if (huaxue[i] == ')')
{
zuo--;
}
if (isdigit(huaxue[i]))
{
int ansa = sum.top() * 2;
sum.pop();
sum.push(ansa);
}
if (isupper(huaxue[i]))
{
h += huaxue[i];
for (int j = i + 1;j < huaxue.length() - 1;j++)
{
if (islower(huaxue[j]))
{
h += huaxue[j];
}
else
{
break;
}
}
}
int mm = find(h);
if (mm == -1)
{
cout << "UNKNOWN" << endl;
continue;
}
else
{
if (!zuo)
{
ans += mm;
}
else
{
if (sum.empty())
{
sum.push(mm);
}
else
{
int ansb = sum.top() + mm;
sum.pop();
sum.push(ansb);
}
}
}
}
cout << ans << endl;
ans = 0;
}
return 0;
}
为什么我的结构体输出很怪??? 输入:
H 1
He 4
C 12
O 16
F 19
Ne 20
Cu 64
Cc 333
END_OF_FIRST_PART
正常输出:
H 1
He 4
C 12
O 16
F 19
Ne 20
Cu 64
Cc 333
实际输出:
H 0
1
He 0
4
C 0
12
O 0
16
F 0
19
Ne 0
20
Cu 0
64
Cc 0
333
有没有大佬能说明一下原因