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

C++求两个整数集合交集代码修复:isEmpty添加与单次打印问题

问题解答

原代码核心问题

你现有代码的逻辑存在明显错误:内层重名定义的i变量会篡改外层循环的计数,且交集判断逻辑完全混乱,isEmpty和isFirstIntersectedElem两个标记的使用位置完全不对。

需求实现说明

1. 提示语仅打印一次的实现逻辑

用isFirstIntersectedElem作为打印开关:

  • 第一次找到交集元素时,先打印提示语,再输出元素,随后将该标记设为false
  • 后续再找到交集元素时,直接输出元素即可,不再重复打印提示语

2. isEmpty逻辑的添加位置

isEmpty用来标记是否存在交集元素,需要在所有元素遍历完成后再判断:

  • 遍历过程中只要找到一个交集元素,就将isEmpty设为false
  • 所有遍历结束后如果isEmpty仍为true,再打印无交集的提示,避免循环中重复输出错误提示

3. 额外优化(集合特性适配)

因为是集合,同一个交集元素不需要重复输出,代码中增加了已输出元素的去重判断,避免重复打印相同值。

修正后完整代码

#include <iostream>
using namespace std;

int main() {
    int A[10], B[10];
    // 用来存储已经输出过的交集元素,避免重复打印
    int printed[10] = {0};
    int printedCount = 0;

    cout << "请输入集合A的10个整数元素:" << endl;
    for (int i = 0; i < 10; i++) {
        cin >> A[i];
    }
    cout << "请输入集合B的10个整数元素:" << endl;
    for (int i = 0; i < 10; i++) {
        cin >> B[i];
    }

    bool isFirstIntersectedElem = true;
    bool isEmpty = true;

    for (int i = 0; i < 10; i++) {
        // 先判断当前A[i]是不是已经输出过了,避免重复
        bool alreadyPrinted = false;
        for (int k = 0; k < printedCount; k++) {
            if (A[i] == printed[k]) {
                alreadyPrinted = true;
                break;
            }
        }
        if (alreadyPrinted) continue;

        for (int j = 0; j < 10; j++) {
            if (A[i] == B[j]) {
                // 找到交集元素
                isEmpty = false;
                if (isFirstIntersectedElem) {
                    // 第一次找到时打印提示,只打印一次
                    cout << "集合A和集合B的交集元素如下:" << endl;
                    isFirstIntersectedElem = false;
                }
                cout << A[i] << " ";
                // 加入已输出数组
                printed[printedCount++] = A[i];
                // 匹配到就跳出B的循环,不用再找
                break;
            }
        }
    }

    // 所有遍历结束后判断是否为空
    if (isEmpty) {
        cout << "未找到集合A和集合B的交集元素。" << endl;
    } else {
        cout << endl;
    }

    return 0;
}

如果你需要保留英文提示,只需要把对应输出语句替换为你要求的英文内容即可,开关逻辑不需要改动。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 12:15:05