You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

输入两组整数提取重复元素的C++程序异常终止问题排查

问题分析与修复方案

核心错误原因

  • 未初始化变量导致逻辑崩溃:代码中int arr[100], size1, size2, size3 = size1 + size2;这一行存在严重问题——size1和size2定义时未初始化,它们的值是内存中的随机垃圾值,因此size3的初始值完全不可控。输入第二组数据时,循环for (int i = size1; i < size3; i++)的终止条件是随机数,大概率会导致循环提前结束或数组越界,直接引发程序异常终止。
  • 未初始化的visited数组:int visited[size3];属于非标准的变长数组(仅部分编译器支持),且未初始化,数组内元素为随机值。判断if (visited[i] != 1)时会出现误判,导致重复输出或漏判重复元素。

修复后的代码

#include <iostream>
#include <cstring> // 用于memset初始化数组
using namespace std;

void swap(int *num1, int *num2) {
    int temp = *num1;
    *num1 = *num2;
    *num2 = temp;
}

void sortArray(int arr[], int size) {
    int i, j, min;
    for (i = 0; i < size - 1; i++) {     
        min = i;
        for (j = i + 1; j < size; j++) {
            if (arr[j] < arr[min]) {
                min = j;
            }
        }
        if (min != i) {
            swap(&arr[min], &arr[i]);
        } 
    }
}

int main() {
    int arr[100], size1, size2, size3;
    
    // 输入第一组数据
    cin >> size1;
    for (int i = 0; i < size1; i++) {
        cin >> arr[i];
    }
    
    // 输入第二组后再计算总长度,避免未初始化变量问题
    cin >> size2;
    size3 = size1 + size2;
    for (int i = size1; i < size3; i++) {
        cin >> arr[i];
    }
    
    sortArray(arr, size3);
    
    cout << "Answer:";
    
    // 初始化visited数组为0,避免随机值干扰判断
    int visited[100];
    memset(visited, 0, sizeof(visited));
    
    for (int i = 0; i < size3; i++) {
        if (visited[i] != 1) {
            int count = 1;
            for (int j = i + 1; j < size3; j++) {
                if (arr[i] == arr[j]) {
                    count++;
                    visited[j] = 1;
                }
            }
            if (count > 1) {
                cout << " " << arr[i]; // 调整输出格式,避免末尾多余空格
            }
        }
    }
    cout << endl;
   
    return 0;
}

额外优化建议

  • 用std::vector替代固定大小数组,更灵活且符合C++现代编程规范,避免数组容量限制问题。
  • 替换手写选择排序为std::sort,效率更高且代码更简洁。
  • 可通过标志位或结果集合优化输出,彻底避免末尾多余空格。

内容的提问来源于stack exchange,提问作者Mariofan717

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 08:01:41