首页 > 解决方案 > 为什么这段代码会崩溃

问题描述

Q. 取一个长度为 n 的数组,其中所有的数字都是非负的且唯一的。找到数组中具有最高值的元素。将元素分成两部分,其中第一部分包含数组中的下一个最高值,第二部分包含所需的附加实体以获得最高值。打印最高值被分成这两个部分的数组。样本输入:4 8 6 3 2 样本输出:4 6 2 6 3 2

#include <array>
#include <iostream>

using namespace std;

int main () {
    int n, i, b, c, m;
    cin >> n;
    int a[ n ];
    int z[ n + 1 ];
    b = a[ 0 ];
    c = a[ 0 ];

    for (i = 0; i < n; i++)
        cin >> a[ i ];
    for (i = 0; i < n; i++) {
        if (b < a[ i ])
            b = a[ i ];
    }
    for (i = 0; i < n; i++) {
        if (c < a[ i ] && a[ i ] != b)
            c = a[ i ];

        if (a[ i ] == b)
            m = i;
    }
    for (i = 0; i < m; i++) {
        z[ i ] = a[ i ];
    }
    for (i = m + 2; i < n + 1; i++) {
        z[ i ] = a[ i - 1 ];
    }
    z[ m ] = c;
    z[ m + 1 ] = b - c;
    for (i = 0; i < n + 1; i++)
        cout << z[ i ] << endl;
    return 0;
}

标签: c++

解决方案


数组不是图书馆。您必须删除:

#include <array>

推荐阅读