【问题标题】:Bubble sort refuses to run in application compilers, but runs on online compilers冒泡排序拒绝在应用程序编译器中运行,而是在在线编译器上运行
【发布时间】:2022-11-30 22:57:18
【问题描述】:

所以这是我为冒泡排序用户定义列表而编写的代码。当我使用 DevC++、CodeBlocks 和 VSCode 等应用程序运行时,它会崩溃(出现错误,“main.exe 已停止工作”)。但是当我使用网络编译器时,它工作得很好。 (应用程序仅在运行此代码时崩溃。它们能够顺利运行其他代码段)

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";
    }

}

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

【问题讨论】:

  • int numbers[n] 不是有效的 c++,即使 n 未初始化
  • @AlanBirtles 天哪,你是对的,我只需要在初始化 n 之后声明数组,非常感谢。现在可以用了
  • 是的,如果您想要可变大小,请使用 std::vector 而不是数组

标签: c++ bubble-sort


【解决方案1】:

问题是 numbers[n] 具有未初始化的 n 值。它需要 n 的一些垃圾值并尝试分配空间。它可能有时会工作,有时可能会失败,具体取决于它采用的垃圾值是多少。

如果 n 的垃圾值是负数或太大,它将失败。在 n 初始化后移动数组声明。

【讨论】:

    猜你喜欢
    • 2016-08-25
    • 1970-01-01
    • 2020-08-03
    • 2012-08-15
    • 2012-01-23
    • 2012-09-22
    • 2014-10-20
    • 2011-03-19
    • 1970-01-01
    相关资源
    最近更新 更多