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

使用嵌套循环在C语言数组中查找三个相同元素

嗨,这事儿不难,我给你写一个用嵌套for循环实现的C语言程序,专门用来找出数组里出现三次的元素。咱们一步步来:

核心思路
  • 外层循环逐个遍历数组中的元素,把当前元素作为要统计次数的目标
  • 内层循环再完整遍历一次数组,统计这个目标元素出现的总次数
  • 当统计次数恰好等于3时,就找到我们要的元素了;如果需要,还可以做去重处理避免重复输出
基础实现代码
#include <stdio.h>

int main() {
    // 示例数组,你可以替换成自己的数组
    int arr[] = {1, 2, 3, 4, 3, 5, 3};
    // 自动计算数组长度,不用硬编码,更灵活
    int arr_length = sizeof(arr) / sizeof(arr[0]);
    // 标记是否找到符合条件的元素
    int has_found = 0;

    // 外层循环:选取当前要统计的元素
    for (int i = 0; i < arr_length; i++) {
        int occurrence = 0;
        // 内层循环:统计当前元素在数组中的出现次数
        for (int j = 0; j < arr_length; j++) {
            if (arr[i] == arr[j]) {
                occurrence++;
            }
        }
        // 检查是否出现三次
        if (occurrence == 3) {
            printf("找到出现三次的元素:%d\n", arr[i]);
            has_found = 1;
            // 如果你只需要找第一个符合条件的元素,在这里加个 break; 就行
            // 要是数组里可能有多个元素都出现三次,就别加break
        }
    }

    // 处理没有找到的情况
    if (!has_found) {
        printf("数组中没有出现三次的元素\n");
    }

    return 0;
}
优化:避免重复输出

上面的基础代码有个小问题:如果数组里有元素多次出现三次(比如[3,3,3,2,2,2]),会重复输出同一个元素。想要解决这个问题,可以加个小逻辑,记录已经找到的元素,避免重复统计:

#include <stdio.h>

int main() {
    int arr[] = {1, 2, 3, 4, 3, 5, 3, 2, 2, 2};
    int arr_length = sizeof(arr) / sizeof(arr[0]);
    int has_found = 0;
    // 用一个数组存储已经找到的元素,防止重复输出
    int found_items[arr_length];
    int found_count = 0;

    for (int i = 0; i < arr_length; i++) {
        // 先检查当前元素是不是已经被找到过了
        int already_processed = 0;
        for (int k = 0; k < found_count; k++) {
            if (arr[i] == found_items[k]) {
                already_processed = 1;
                break;
            }
        }
        // 如果已经处理过,直接跳过当前循环
        if (already_processed) {
            continue;
        }

        int occurrence = 0;
        for (int j = 0; j < arr_length; j++) {
            if (arr[i] == arr[j]) {
                occurrence++;
            }
        }

        if (occurrence == 3) {
            printf("找到出现三次的元素:%d\n", arr[i]);
            found_items[found_count++] = arr[i];
            has_found = 1;
        }
    }

    if (!has_found) {
        printf("数组中没有出现三次的元素\n");
    }

    return 0;
}

这段优化后的代码会把每个符合条件的元素只输出一次,更实用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 03:36:54