【发布时间】:2021-11-10 13:41:47
【问题描述】:
我想对一个数组从最大到最小进行排序,并创建一个对其进行排序的新数组...
这是我的代码:
#include <iostream>
using namespace std;
int main()
{
int size, sum = 0, answer = 0,pos, max;
int array[size];
int array2[size];
cin >> size;
for (int i = 0; i < size; i++)
{
cin >> array[i];
sum+=array[i];
}
for (int i = 0; i < size; i++)
{
max = 0;
pos = 0;
for (int q = 0; q < size; q++)
{
if (array[q] > max)
{
max = array[q];
pos = q;
}
}
array2[i] = max;
array[pos] = 0;
}
for (int i = 0; i < size; i++)
{
cout << array2[i] << ", ";
}
return 0;
}
当我输入时:
5
1 2 3 4 5
我得到的输出是:
0, 0, 0, 0, 5,
但我希望它是 5、4、3、2、1,
【问题讨论】:
-
您是否尝试调试代码?
int size; array[size];是严重未定义的行为。 -
听起来你可能需要学习如何使用调试器来单步调试你的代码。使用好的调试器,您可以逐行执行您的程序,并查看它与您期望的偏差在哪里。如果您要进行任何编程,这是必不可少的工具。进一步阅读:How to debug small programs 和 Debugging Guide
-
您正在使用未初始化的
size创建两个数组。这不会有好的结局。 -
int array[size];-- 即使size已初始化,这也不是有效的 C++ 代码。 C++ 中的数组的大小必须由编译时表达式表示,而不是运行时值。请改用std::vector<int> array(size);。 -
所以我猜你不允许使用
std::sort?