使用嵌套循环在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
相关产品推荐
相关产品推荐

