C++ 为什么气泡排序程序在使用“垃圾”时显示垃圾值;“中断”;在循环中?

C++ 为什么气泡排序程序在使用“垃圾”时显示垃圾值;“中断”;在循环中?,c++,arrays,for-loop,break,C++,Arrays,For Loop,Break,此代码将从用户处获取数组元素,然后对其进行排序。用户输入限制为20。如果(a[I]==0)中断,我有一个特定行的问题,它是如果我在这里使用break,结果将显示垃圾值。否则,它可以正常工作,但我希望用户能够用20个或更少的数字运行程序。我的意思是,只要他们觉得完成了,就可以简单地输入0,这样循环就中断了。我给出下面的代码。请尝试给出简单的解决方案,不要装腔作势。多谢各位 //Sorting with user input array elements void print(float a[],

此代码将从用户处获取数组元素,然后对其进行排序。用户输入限制为20。如果(a[I]==0)中断,我有一个特定行的问题,它是
如果我在这里使用break,结果将显示垃圾值。否则,它可以正常工作,但我希望用户能够用20个或更少的数字运行程序。我的意思是,只要他们觉得完成了,就可以简单地输入0,这样循环就中断了。我给出下面的代码。请尝试给出简单的解决方案,不要装腔作势。多谢各位

//Sorting with user input array elements
void print(float a[], int n)
{
    for (int i = 0; i < n; i++) {
        cout << a[i] << " ";
    }
}

void sort(float a[], int n)
{
    for (int i = 1; i < n; i++) {

        for (int j = 0; j < n - i; j++) {
            if (a[j] > a[j + 1]) {
                swap(a[j], a[j + 1]);
            }
        }
    }
}

int main()
{
    float a[20];
    int size;
    court << "Enter Floats and terminate with 0 (Highest limit is 20)" << endl;
    for (int i = 0; i <= 20; i++) {
        cout << "a[" << i << "] : ";
        cin >> a[i];
        if (a[i] == 0)
            break;
    }
    size = sizeof(a) / sizeof(int);

    cout << "\nGiven Values   :: ";
    print(a, size);
    cout << endl;
    sort(a, size);
    cout << "Sorted Result    :: ";
    print(a, size);
}
//使用用户输入数组元素进行排序
无效打印(浮点a[],整数n)
{
对于(int i=0;icout数组大小为20。用户设置值直到输入0。这意味着其他元素未初始化。这些是垃圾值。您可以通过保存输入的元素数来修复它

//Sorting with user input array elements
void print(float a[], int n)
{
    for (int i = 0; i < n; i++) {
        cout << a[i] << " ";
    }
}

void sort(float a[], int n)
{
    for (int i = 1; i < n; i++) {

        for (int j = 0; j < n - i; j++) {
            if (a[j] > a[j + 1]) {
                swap(a[j], a[j + 1]);
            }
        }
    }
}

int main()
{
    float a[20];
    int size{0};
    court << "Enter Floats and terminate with 0 (Highest limit is 20)" << endl;
    for (int i = 0; i < 20; i++) {
        cout << "a[" << i << "] : ";
        cin >> a[i];
        if (a[i] == 0)
            break;
        ++size;
    }

    cout << "\nGiven Values   :: ";
    print(a, size);
    cout << endl;
    sort(a, size);
    cout << "Sorted Result    :: ";
    print(a, size);
}
//使用用户输入数组元素进行排序
无效打印(浮点a[],整数n)
{
对于(int i=0;icout数组的大小为20。用户在输入0之前设置值。这意味着其他元素未初始化。这些是垃圾值。您可以通过保存输入的元素数来修复它。如何保存输入的元素数?我的意思是我已经使用了“大小”在用户输入后确定大小。循环一直持续到
i==20
。这意味着(除非用户在此之前输入一个零值),一个值将从数组末尾读取。结果是未定义的行为。数组的大小是固定的。它不会更改。
sizeof(a)/sizeof(int)
将始终返回
20
“请,…不要有毒和傲慢”-请,不要写这篇文章,它不属于这个问题,对绝大多数读者来说是不礼貌的。