c语言在数组中找寻指定子数组
时间: 2024-11-29 08:39:21 浏览: 3
在C语言中,查找指定子数组通常涉及到遍历整个数组并逐个比较元素。这里有一个简单的示例说明如何在一个整型一维数组中搜索特定的子数组:
```c
#include <stdio.h>
#include <string.h>
int find_subarray(int arr[], int subarr[], int len) {
int i, j;
for (i = 0; i <= sizeof(arr) / sizeof(arr[0]) - len; i++) { // 遍历主数组
for (j = 0; j < len; j++) { // 比较子数组中的元素
if (arr[i + j] != subarr[j]) { // 如果当前元素不匹配,则退出内循环
break;
}
}
if (j == len) { // 子数组完全匹配
return i; // 返回子数组的起始索引
}
}
return -1; // 如果未找到子数组,则返回-1表示失败
}
int main() {
int main_array[] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
int search_sub[] = {3, 4, 5}; // 要查找的子数组
int len = sizeof(search_sub) / sizeof(search_sub[0]);
int result_index = find_subarray(main_array, search_sub, len);
if (result_index != -1) {
printf("子数组 %d, %d, %d 在主数组中的起始位置是 %d\n",
search_sub[0], search_sub[1], search_sub[2], result_index);
} else {
printf("子数组 not found in the main array.\n");
}
return 0;
}
```
这个`find_subarray`函数会检查给定的主数组`arr`中是否存在与`subarr`长度相同的连续子数组,并返回匹配子数组的起始索引。如果没有找到,它将返回-1。
阅读全文