Возведение матрицы в квадрат

Мне нужно умножить массив на самого себя,при этом используя функцию.Я начинающий программист, поэтому не понимаю что не так.
при запуске выдает массив,но почему то пустой

#include <stdio.h>

int main()
{
    const int n = 5;
    int arr[n][n];
    int arr1[n][n];
    for(int i = 0; i < n; i++) // столбец
    {
        for(int j = 0; j < n; j++) //строка
        {
            arr[i][j] = j + 2;
            printf("%d\n", arr1[i][j]);
        }
    }
    return 0;
}
void matrix(int n)
{
    int arr[n][n];
    int arr1[n][n];
    for(int i = 0; i < n; i++)
    {
        for(int j = 0; j < n; j++)
        {
            arr1[i][j] = 0;
            for(int l = 0; l < n; l++)
            {
                arr1[i][j] += arr[i][l] * arr[l][i];
                return arr1[i][j];
            }
        }
    }
}

Ответы (1 шт):

Автор решения: Harry

Вот, несколько переделанная ваша программа...

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

#define  n 5

void square(int a[n][n])
{
    int r[n][n];
    for(int i = 0; i < n; ++i)
        for(int j = 0; j < n; ++j)
        {
            r[i][j] = 0;
            for(int k = 0; k < n; ++k)
                r[i][j] += a[i][k]*a[k][j];
        }
    for(int i = 0; i < n; ++i)
        for(int j = 0; j < n; ++j)
            a[i][j] = r[i][j];
}

int main()
{
    int arr[n][n];
    for(int i = 0; i < n; i++) // столбец
    {
        for(int j = 0; j < n; j++) //строка
        {
            arr[i][j] = j + 2;
            printf("%3d ", arr[i][j]);
        }
        puts("");
    }
    puts("\n");
    square(arr);
    for(int i = 0; i < n; i++) // столбец
    {
        for(int j = 0; j < n; j++) //строка
        {
            printf("%3d ", arr[i][j]);
        }
        puts("");
    }
}
→ Ссылка