Leggere i numeri n e k(k<n) e generare una matrice quadrata A di ordine n con numeri interi casuali minori di 50. Stamapre la matrice.
Stampare tutte le sottomatrici quadrate di ordine k la cui somma degli elementi sia dispari.

Esempio: Sia n=4 e k=3 e supponiamo che la matrice generata sia:

26 30 48 32
6 0 44 1
23 11 29 16
12 41 24 6

allora vengono stampate le due sottomatrici:

26 30 48
6 0 44
23 11 29

30 48 32
0 44 1
11 29 16

Questo è ciò che ho provato a fare io:
codice:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define MAX 100

void generamatrice (int A[MAX][MAX], int n);
void stampamatrice(int A[MAX][MAX], int n);

main(){
	
	int A[MAX][MAX], n, m, k, j, i, somma;
    printf("Inserisci l'ordine della matrice: \n");
	scanf("%d", &n);
	generamatrice(A, n);
	stampamatrice(A, n);
	printf("Inserisci l'ordine delle sottomatrici: \n");
	scanf("%d", &k);

	somma=0;
	
	for(i=0; i<n; i++){
		for(j=0; j<n; j++){
			for(i=0; i<k; i++){
				for(j=0; j<k; j++){
					somma = somma + A[i][j];
				}
			}
			if(somma % 2 != 0){
				printf("%d", A[i][j]);
				printf("\n");
			}
		}
	}
	return;
	system("PAUSE");
}

void generamatrice (int A[MAX][MAX], int n)
{
	int i, j;
	srand(time(NULL));
	for(i=0; i<n; i++){
		for(j=0; j<n; j++)
			A[i][j] rand () % (1) + 25;
	}
return;
}

void stampamatrice(int A[MAX][MAX], int n)
{
	int i, j;
	for(i=0; i<n; i++){
		for(j=0; j<n; j++)
			printf("%d", A[i][j]);
		printf("\n");
	}
return;
}
Vi chiedo, per favore, di dirmi dove ho sbagliato e di aiutarmi a completarlo.
Grazie in anticipo.