c语言实现,循环缓存输入的8元素数组,并校对8元素数组是否已经缓存过,如果已经缓存过则不再缓存,如果没有缓存过则进入缓存,缓存20次后,一次性打印这些缓存
时间: 2024-05-03 14:21:29 浏览: 71
的8元素数组。
```c
#include <stdio.h>
#define CACHE_SIZE 20
#define ARRAY_SIZE 8
int main() {
int cache[CACHE_SIZE][ARRAY_SIZE] = {0}; // 初始化缓存数组为0
int cache_idx = 0; // 缓存数组的下标
while (1) {
int arr[ARRAY_SIZE] = {0}; // 初始化输入数组为0
printf("请输入一个%d元素的数组:", ARRAY_SIZE);
for (int i = 0; i < ARRAY_SIZE; i++) {
scanf("%d", &arr[i]);
}
int is_cached = 0; // 是否已经缓存的标志位
for (int i = 0; i < CACHE_SIZE; i++) {
int is_same = 1; // 是否相同的标志位
for (int j = 0; j < ARRAY_SIZE; j++) {
if (cache[i][j] != arr[j]) {
is_same = 0;
break;
}
}
if (is_same) {
is_cached = 1;
break;
}
}
if (!is_cached) { // 如果没有缓存过,则将该数组加入缓存
for (int i = 0; i < ARRAY_SIZE; i++) {
cache[cache_idx][i] = arr[i];
}
cache_idx = (cache_idx + 1) % CACHE_SIZE; // 缓存下标循环
}
if (cache_idx == 0) { // 如果缓存数组已经填满,则打印缓存
printf("缓存的%d个数组为:\n", CACHE_SIZE);
for (int i = 0; i < CACHE_SIZE; i++) {
for (int j = 0; j < ARRAY_SIZE; j++) {
printf("%d ", cache[i][j]);
}
printf("\n");
}
}
}
return 0;
}
```
这里使用了一个二维数组`cache`来作为缓存,也就是说,我们可以缓存多个数组。每次输入一个数组后,先遍历缓存数组`cache`,判断是否已经缓存过该数组,如果已经缓存过,则将标志位`is_cached`设为1,否则将该数组加入缓存,并将缓存下标`cache_idx`循环加1。
当缓存数组填满时(即缓存下标`cache_idx`为0),输出缓存数组中的所有数组。需要注意的是,缓存数组可能会被填满多次,所以我们需要在循环中不断判断缓存下标是否为0。
阅读全文