这是我写的对用户定义列表进行冒泡排序的代码。当我使用DevC++、CodeBlocks和VSCode等应用程序运行时,它会崩溃(带来错误,“main.exe has stopped working”)。但当我使用Web编译器时,它会完美地工作。(应用程序只在运行此代码时崩溃。它们能够顺利地运行其他代码片段)
int main()
{
int n;
int numbers[n];
cout << "How many numbers do you want to sort?\n";
cin >> n;
cout << "Enter the "<< n <<" values.\n";
for (int w = 0; w < n; w++)
{
cin >> numbers[w];
}
cout << "The unsorted list is: \n";
for (int m = 0; m < n; m++)
{
cout << numbers[m] << "\t";
}
for (int iterat = 0; iterat < n-1; iterat++)
{
for (int j = 0; j < n-1; j++)
{
if (numbers[j] > numbers[j + 1])
{
int temp = numbers[j];
numbers[j] = numbers[j + 1];
numbers[j + 1] = temp;
}
}
}
cout << "The sorted list is: \n";
for (int p = 0; p < n; p++)
{
cout << numbers[p] << "\t";
}
}
我是一名学生,我们目前正在学习排序算法,所以我向我的讲师和许多同学寻求帮助,但他们都不知道问题可能是什么,因为这应该是正确的。请告诉我问题可能是什么,以及如何解决它。
1条答案
按热度按时间nafvub8i1#
问题是numbers[n]具有未初始化的n值。它采用了n的一些垃圾值并尝试分配空间。它有时可能工作,有时可能失败,这取决于它采用的垃圾值是什么。
如果n的垃圾值为负数或太大,则会失败。请在初始化n后移动数组声明。