首页 > 解决方案 > 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();
    }
}

标签: c++inputwhile-loop

解决方案


这是因为您在第一个周期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();
    }
}

推荐阅读