c++ 冒泡排序拒绝在应用程序编译器中运行,但可以在联机编译器上运行

h5qlskok  于 2022-12-01  发布在  其他
关注(0)|答案(1)|浏览(130)

这是我写的对用户定义列表进行冒泡排序的代码。当我使用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";
    }

}

我是一名学生,我们目前正在学习排序算法,所以我向我的讲师和许多同学寻求帮助,但他们都不知道问题可能是什么,因为这应该是正确的。请告诉我问题可能是什么,以及如何解决它。

nafvub8i

nafvub8i1#

问题是numbers[n]具有未初始化的n值。它采用了n的一些垃圾值并尝试分配空间。它有时可能工作,有时可能失败,这取决于它采用的垃圾值是什么。
如果n的垃圾值为负数或太大,则会失败。请在初始化n后移动数组声明。

相关问题