首页 > 解决方案 > 当我输入输入时,C++ 窗口就关闭了

问题描述

#include <bits/stdc++.h>

using namespace std;

struct Cow
{
    int p, s, t;
};

int main()
{
    int n, b;
    cin >> n >> b;

    Cow cows[n];

    for (int i = 0; i < n; i++)
    {
        cin >> cows[i].p >> cows[i].s;
        cows[i].t = cows[i].p + cows[i].s;
    }

    int temp = b;
    int best = 0;

    for (int i = 0; i < n; i++)
    {
        temp = b;
        int counter = 0;
        for (int j = 0; j < n; j++)
        {
            if (j == i)
            {
                temp = temp - (cows[j].p / 2 + cows[j].s);
            }
            else
            {
                temp = temp - cows[j].t;
            }
            if (temp < 0)
            {
                break;
            }
            else
            {
                counter++;
            }
            if (counter > best)
            {
                best = counter;
            }
        }

        cout << best;

        return 0;
    }

在上面的代码中,当我运行它时,它会像往常一样打开一个窗口,让我输入输入(如下所示)也很好。

5 24
4 2
2 0
8 1
6 3
12 5

但是当我按下回车键时,它只会加载几秒钟,然后关闭 C++ 窗口。有什么帮助吗?

提前致谢!

标签: c++

解决方案


当您从 IDE 运行程序时,这是一个常见问题,因为程序结束窗口会自动关闭,为了防止这种情况,您可以执行以下操作:

//...
cout << best;

cin.get(); //get the newline character present in the buffer from previous cin
cin.get(); //wait for the user to hit enter before closing the window (if needed)

return 0;
//...

您还缺少一个括号,因为您的程序运行我假设您在发布代码时错过了它,您应该将它完全包含在您的代码中以获得更完整的诊断。


旁注:


1.可变长度数组 ( cows[n]) 不是 C++ 标准的一部分,虽然有些编译器允许,但你不应该使用它。试试std::vector

为什么可变长度数组不是 C++ 标准的一部分?


2.不要使用#include <bits/stdc++.h>,这是一个不好的做法,而且在这种情况下你只需要<iostream>库。

为什么我不应该#include <bits/stdc++.h>?


3. using namespace std;也不好。使用std::范围或个人用途,例如:using std::cout;

为什么是“使用命名空间标准;” 被认为是不好的做法?


23的组合有时会产生不良影响。

考虑以下示例

#include <bits/stdc++.h>

using namespace std;

int size = 0;

int main()
{
    cout << size;
}

此代码适用于 C++17 之前的编译器,但自从引入 C++17 以来std::size,您将有一个不明确的引用,size并且您的程序将无法编译。

该示例归功于 @user4581301


推荐阅读