C语言怎么解决这个问题呢,自己弄了好久运行不出来感觉好复杂

img

仅供参考!

img

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

void makearr(int a[3][16], int b[3][3], int c[14])
{
    int idx = 0, sum = 0, tmp[9] = {0}, *p = tmp;

    for (int i = 0; i < 14; i++)
    {
        for (int j = 0; j < 3; j++)
        {
            for (int k = 0, z = i; k < 3; z++, k++)
            {
                *p++ = b[j][k] * a[j][z];
            }
        }

        int n = 9;
        p = tmp;
        while (n--)
            sum += *p++;
        c[idx++] = 1.0 * sum / 16;

        p = tmp;
        sum = 0;
    }
}

int myrand()
{
    static int i = 3;
    srand(time(NULL) + i++);
    return rand() % 90 + 10;
}

int main(int argc, char *argv[])
{
    int a[3][16], b[3][3], c[14];
    for (int i = 0; i < 3; i++)
    {
        for (int j = 0; j < 16; j++)
        {
            a[i][j] = myrand();
            printf("%d ", a[i][j]);
        }
        puts("");
    }
    puts("");
    for (int i = 0; i < 3; i++)
    {
        for (int j = 0; j < 3; j++)
        {
            b[i][j] = myrand();
            printf("%d ", b[i][j]);
        }
        puts("");
    }

    puts("");
    makearr(a, b, c);
    for (int i = 0; i < 14; i++)
    {
        printf("%d ", c[i]);
        if (i == 6)
            puts("");
    }

    return 0;
}