studiati questa, tra le soluzioni possibili

codice:
#include <stdio.h>
#include <stdlib.h>


int main()
{

	unsigned int i, j;
	unsigned int a[][3] = {
		{11, 2, 3},
		{4, 2, 6},
		{4, 2, 5}
	};
	size_t dim_a =sizeof ( a ) / sizeof (a[0][0]);


	//Visualizzazione matrice
	for( i = 0; i < 3; i++) {

		printf("\n");

		for(j=0; j<3; j++)
			printf("%5d ",a[i][j]);

		printf("\n");

	}

	/*
	normalmente un contatore come quello che vuoi
	realizzare utilizza gli alberi binari.
	Qui utilizziamo un metodo un po' meno efficiente
	che va bene solo per piccole matrici
	*/

	/*
	definiamo una seconda matrice che un numero di righe uguale
	alla dimensione della prima matrice e due colonne.
	Nella prima colonna mettiamo gli elementi della prima matrice
	nella seconda il numero di occorrenze.
	-1 rappresenta la fine matrice
	*/

	/*
	legge tutta la matrice e per ogni elemento scorre la
	matrice dei confronti per verificare se l'elemento 
	già esiste
	*/

	unsigned int matrice_confronti[ dim_a ][2] ;
	size_t dim_mat_confr = sizeof (matrice_confronti) / sizeof (matrice_confronti[0][0]) / 2 ;

	// inizializzazione
	for( i = 0; i < dim_mat_confr; i++) {
			matrice_confronti[i][0] = -1;
			matrice_confronti[i][1] = 0 ;
	}
	
	for( i = 0; i < 3; i++ ) {

		for( j = 0; j < 3; j++ ) {

			unsigned int el = a[i][j];
			unsigned int k = 0;
			while ( matrice_confronti[k][0] != -1 )
				if ( matrice_confronti[k][0] == el ) break;
				else k++;
			if ( matrice_confronti[k][0] == -1 ) 
				matrice_confronti[k][0] = el  ;
			matrice_confronti[k][1] += 1 ;
					
		}

	}

	//Visualizzazione la matrice dei confronti
	unsigned int k = 0;
	while ( matrice_confronti[k][0] != -1 ) {
		printf("%d %d \n",matrice_confronti[k][0], matrice_confronti[k][1]);
		k++;
	}

	return ( 0 ) ;

}