Ci sono quasi,ora stampa tutte le lettere solo in spazi vuoti ma non so come fare per non incrementare o diminuire a o b nello switch nel caso la casella fosse occupata.

qualche consiglio....

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

#define N 10

int main()
{
	char griglia[N][N]={0},a,b;
	char d='A';
	int num_cas,alfa;

	srand ((unsigned)time(NULL));		//inizializzo generatore random

	for(a=0;a<N;a++)					//creo griglia con puntini				
		for(b=0;b<N;b++)
			griglia[a][b] = '.';

	for(a=0,b=0,alfa=0;alfa<26;alfa++){
		if(griglia[a][b] == '.')
			griglia[a][b] = d++;
		else alfa--;
		num_cas = rand() % 4;
		switch (num_cas) {
			case 0: if(a>0)
						a -= 1;
				break;
			case 1: if(b<9)
						b += 1;
				break;
			case 2: if(a<9)
						a += 1;
				break;
			case 3: if(b>0)
						b -= 1;
				break;}		
	}
	
	for(a=0;a<N;a++){
		printf("\n\n\t\t\t");
		for(b=0;b<N;b++)
			printf ("%c  ",griglia[a][b]);}
		printf("\n\n\n\n");
	
	return 0;
}