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

C++读取20个整数存数组并去重打印时遇0x80070002错误求助

嘿,这个错误码0x80070002其实是Windows系统的「文件找不到」错误,结合你代码里的#include "stdafx.h",大概率是Visual Studio预编译头的配置或者文件缺失问题,我帮你拆解下解决办法,顺便补全你要的去重功能代码:


一、先解决「无法打开文件」的错误

这个错误的核心是编译器找不到stdafx.h文件,有两种处理方式:

  • 方式1:移除预编译头依赖(推荐新手用)
    如果你不是必须用预编译头(绝大多数新手项目都不需要),直接删掉代码里的#include "stdafx.h",然后在Visual Studio里调整项目设置:
    右键项目 → 属性 → 配置属性 → C/C++ → 预编译头 → 把「预编译头」选项改成不使用预编译头,应用保存后重新编译即可。

  • 方式2:修复预编译头文件
    如果你确实需要用预编译头,先检查项目目录里是否存在stdafx.h和stdafx.cpp文件:

    • 如果没有,手动新建这两个文件:stdafx.h可以是空文件,stdafx.cpp里只需要写#include "stdafx.h";
    • 然后在项目设置里把预编译头设为使用预编译头,并指定「预编译头文件」为stdafx.h。

二、补全你要的「仅保留首次出现实例」的完整代码

这里我用unordered_set来高效记录已经出现过的整数,逻辑清晰且性能不错:

#include <iostream>
#include <unordered_set>

int main() {
    const int SIZE = 20;
    int input[SIZE];
    
    // 读取用户输入的20个整数
    std::cout << "请输入20个整数:\n";
    for (int i = 0; i < SIZE; ++i) {
        std::cin >> input[i];
    }
    
    // 遍历数组,仅打印首次出现的元素
    std::cout << "\n仅保留首次出现的结果:\n";
    std::unordered_set<int> seen_numbers;
    for (int num : input) {
        // 如果当前数没出现过,就打印并加入已记录集合
        if (seen_numbers.find(num) == seen_numbers.end()) {
            std::cout << num << " ";
            seen_numbers.insert(num);
        }
    }
    std::cout << "\n";
    
    return 0;
}

额外备选方案(不用STL的手动实现)

如果你还没学过STL容器,也可以用一个额外数组手动记录已出现的数,代码稍微繁琐但逻辑简单:

#include <iostream>

int main() {
    const int SIZE = 20;
    int input[SIZE];
    
    // 读取输入
    std::cout << "请输入20个整数:\n";
    for (int i = 0; i < SIZE; ++i) {
        std::cin >> input[i];
    }
    
    // 手动去重打印
    std::cout << "\n仅保留首次出现的结果:\n";
    int seen[SIZE];
    int seen_count = 0;
    for (int num : input) {
        bool exists = false;
        // 检查当前数是否已经出现过
        for (int i = 0; i < seen_count; ++i) {
            if (seen[i] == num) {
                exists = true;
                break;
            }
        }
        if (!exists) {
            std::cout << num << " ";
            seen[seen_count++] = num;
        }
    }
    std::cout << "\n";
    
    return 0;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:20:55