c++ - 当我输入输入时,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++ 窗口。有什么帮助吗?
提前致谢!
解决方案
当您从 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
。
2.不要使用#include <bits/stdc++.h>
,这是一个不好的做法,而且在这种情况下你只需要<iostream>
库。
为什么我不应该#include <bits/stdc++.h>?
3. using namespace std;
也不好。使用std::
范围或个人用途,例如:using std::cout;
2和3的组合有时会产生不良影响。
考虑以下示例:
#include <bits/stdc++.h>
using namespace std;
int size = 0;
int main()
{
cout << size;
}
此代码适用于 C++17 之前的编译器,但自从引入 C++17 以来std::size
,您将有一个不明确的引用,size
并且您的程序将无法编译。
该示例归功于 @user4581301。
推荐阅读
- c# - 删除注册表子项不会删除,没有抛出错误
- java - Java API 可用于阅读 GMAIL 吗?
- bash - 将前导零添加到特殊标签之间的数字
- python - Cuda 和 pytorch 内存使用情况
- scala - Scala Doobie 在使用 OR WHERE 时不返回任何内容
- android - notifyDataSetChanged() 在 MVP android 中不起作用
- jekyll - Jekyll 无法从集合中找到包含文件
- c++ - 在对象初始化之前访问 C++ std::vector 对象成员
- swift - 运行单元测试用例时无法加载模块
- c# - 我无法理解下面的 c# 代码片段