【发布时间】:2021-03-20 00:43:08
【问题描述】:
我对编码很陌生,所以我不太明白为什么这个 while 循环没有采用最后输入的值。如果您要输入“1, 2, 3, 4, 5”,最后的输出将是“4, 3, 2, 1”。任何帮助将不胜感激。
#include <iostream>
#include <cstdlib>
#include <queue>
#include <vector>
using namespace std;
int main()
{
priority_queue<int> q;
int score;
cin >> score;
int count = 0;
while (count != 4)
{
count++;
q.push(score);
cin >> score;
}
while (!q.empty())
{
cout << q.top() << " ";
q.pop();
}
}
【问题讨论】:
-
你永远不会在最后一个
cin >> score;之后q.push(score);。尝试使用调试器单步执行您的代码,看看q会发生什么。 -
你的结构有点奇怪。只需将
cin移到push之前,将cin移出循环,当count为5时停止循环。 -
感谢您的帮助。我完全忘记了我在 while 循环上方还有另一个输入。
-
有条不紊地与鸭子交谈...见How to debug small programs,别笑,它有效...
标签: c++ input while-loop