C语言交集以指针的方式表示

img


请问这个该怎么用C语言表示
在线请求解答
心怀诚挚之心
望看看问题
帮助完成练习

非标准答案,仅供参考!谢谢!

img

#include <stdio.h>
#include <string.h>

void intersection(int (*arr)[100], int len1, int len2, int *out, int *n)
{
    int k = 0;
    for (int i = 0; i < len1; i++)
    {
        for (int j = 0; j < len2; j++)
        {
            if (*(*arr + i) == *(*(arr + 1) + j))
            {
                *(out + k) = *(*arr + i);
                k++;
            }
        }
    }

    *n = k;
}

int main(int argc, char *argv[])
{
    int n;
    do
    {
        scanf("%d", &n);
    } while (n < 1);

    int arr[n][2][100], len1[n][2], out[n][100], len[n];
    memset((char *)len, 0, n * sizeof(int));

    for (int i = 0; i < n; i++)
    {
        int z = 0;
        scanf("%d", &len1[i][0]);
        for (int j = 0; j < len1[i][0]; j++)
        {
            scanf("%d", &arr[i][0][z++]);
        }

        scanf("%d", &len1[i][1]);
        z = 0;
        for (int k = 0; k < len1[i][1]; k++)
        {
            scanf("%d", &arr[i][1][z++]);
        }
    }

    for (int i = 0; i < n; i++)
    {
        intersection(arr[i], len1[i][0], len1[i][1], out[i], &len[i]);
    }

    //输出
    puts("");
    for (int i = 0; i < n; i++)
    {
        if (len[i] == 0)
            puts("empty!");
        else
                {
            for (int j = 0; j < len[i]; j++)
            {
                printf("%d ", out[i][j]);
            }
                puts("");
                }
    }

    return 0;
}