小白做题触发断点 0x7950F2F6 (ucrtbased.dll) (寻找中位数.exe 中)处有未经处理的异常: 将一个无效参数传递给了将无效参数视为严重错误的函数。

图片说明图片说明

小白在做leetcode4寻找有序数组中位数时发现的问题

#include<iostream>
#include<vector>
using namespace std;

double FindMedium(vector<double>& nums1, vector<double>& nums2) {

    vector<double> nums3;
    int a = nums1.size();
    int b = nums2.size();
    int i = 0, j = 0, k = 0;
    double medium;
    if (a == 0) {
        for (j = 0; j <= b; j++) {
            nums3[k] = nums2[j];
            k++;
        }
    }
    else if (b == 0) {
        for (i = 0; i <= b; i++) {
            nums3[k] = nums1[i];
            k++;
        }
    }
    else if (a == 0 && b == 0) {
        cout << "两个数组均为空";
    }
    else {
        while (i < a && j < b) {
            if (nums1[i] < nums2[j]) {
                nums3[k] = nums1[i];
                i++; k++;
            }
            else {
                nums3[k] = nums2[j];
                k++; j++;
            }
        }
    }
    int c = nums3.size();
    if (c % 2 == 0) {
        medium = (nums3[c / 2 - 1] + nums3[c / 2]) / 2;
    }
    else {
        medium = nums3[(c - 1) / 2];
    }
    return medium;
}
int main() {
    vector<double> na, nb, nc;
    int a, b;
    double med;
    cout << "请有序输入第一个数组的长度";
    cin >> a;
    cout << "请输入a数组的元素";
    for (int i = 0; i <= a; i++) {
        cin >> na[i];
    }
    cout << "请有序输入第二个数组的长度";
    cin >> b;
    cout << "请输入b数组的元素";
    for (int j = 0; j <= b; j++) {
        cin >> nb[j];
    }
    med = FindMedium(na, nb);
    cout << "两数组的中位数是" << med;
    return 0;
}
c++
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问