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

如何完善C语言代码以找出首个数组中不在次数组的最小整数

解决方案

要完成这个任务,核心是先筛选出第一个数组中不在第二个数组里的元素,再从这些元素中找最小值。以下是具体的完善步骤和完整代码:

步骤说明

  • 元素存在性检查:写一个辅助函数,判断某个整数是否存在于目标数组中。
  • 筛选+找最小值:遍历第一个数组的每个元素,对每个元素检查是否不在第二个数组中;同时维护一个变量,记录当前找到的符合条件的最小整数。
  • 结果输出:最后根据记录的最小值,输出结果(需考虑第一个数组所有元素都在第二个数组中的情况)。

完整代码

#include <stdio.h>
#include <locale.h>
#include <limits.h>  // 用于获取INT_MAX(最大整数常量)

// 辅助函数:判断num是否存在于arr数组中,size为数组长度
int isPresent(int num, int arr[], int size) {
    for (int i = 0; i < size; i++) {
        if (arr[i] == num) {
            return 1;  // 存在返回1
        }
    }
    return 0;  // 不存在返回0
}

int main() {
    setlocale(LC_ALL, "Rus");
    int arr1[5];
    int arr2[5];
    
    printf("输入第一个数组的5个整数:\n");
    for (int i = 0; i < 5; i++) {
        scanf_s("%d", &arr1[i]);
    }

    printf("输入第二个数组的5个整数:\n");
    for (int i = 0; i < 5; i++) {
        scanf_s("%d", &arr2[i]);
    }

    // 初始化最小符合条件的数为最大整数,确保第一个有效元素能替换它
    int min_valid = INT_MAX;

    // 遍历第一个数组,筛选并找最小值
    for (int i = 0; i < 5; i++) {
        int current = arr1[i];
        // 如果当前元素不在第二个数组中,且比当前记录的最小值小
        if (!isPresent(current, arr2, 5) && current < min_valid) {
            min_valid = current;
        }
    }

    // 输出结果
    if (min_valid != INT_MAX) {
        printf("第一个数组中不在第二个数组里的最小整数是:%d\n", min_valid);
    } else {
        printf("第一个数组的所有元素都存在于第二个数组中。\n");
    }

    return 0;
}

代码解释

  • 辅助函数isPresent:通过遍历数组逐一对比元素,实现存在性判断,逻辑简单直接,适合数组长度较小的场景(这里固定为5个元素)。
  • min_valid初始化:用INT_MAX(<limits.h>中定义的最大整数)作为初始值,保证第一个符合条件的元素一定会更新这个变量。
  • 遍历筛选逻辑:对第一个数组的每个元素,先检查是否不在第二个数组中,再判断是否比当前最小值小,满足条件则更新最小值。
  • 边界情况处理:如果遍历结束后min_valid还是INT_MAX,说明第一个数组的所有元素都在第二个数组里,此时给出对应的提示。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 10:10:24