c++ - While 循环采用用户输入而不采用最后输入的值
问题描述
我对编码很陌生,所以我不太明白为什么这个 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();
}
}
解决方案
这是因为您在第一个周期q.push(score);
的最后一个之后永远不会这样做。这意味着队列只保存 4 个整数,这导致下一个 while 循环只打印四个数字。下面的代码将打印五个数字。cin >> score;
while
#include <iostream>
#include <queue>
using namespace std;
int main()
{
priority_queue<int> q;
int score;
int count = 0;
while (count != 5)
{
cin >> score;
q.push(score);
count++;
}
while (!q.empty())
{
cout << q.top() << " ";
q.pop();
}
}
推荐阅读
- flutter - 自定义包库需要依赖于导入的项目
- google-apps-script - Google Apps 脚本的项目版本是否有限制?
- ajax - Symfony 4 - 使用 Axios 提交表单?
- r - 一次重新调整多个变量
- sql - 如何跟踪附加到 SQL 表的新数据?
- python - 从 PHP 调用的 Python 脚本无法写入文件
- scala - 由于未找到依赖关系,编译 Scala 程序失败
- c# - C# 错误索引超出了数组的范围(Visual Studio、Winform、.NET Framework 4.6)
- google-cloud-logging - 为什么 Stackdriver 日志记录不遵守时间戳的高级过滤条件?
- ruby-on-rails - 为 nil:NilClass (NoMethodError) 获取未定义的方法“click_button”