No solo ese, tienes muchos fallos.
Usas
para guardar cadenas de texto de los DNIs introducidos y esa declaración permite guardar una única cadena.
Usas
para sacar el resto de la división pero matrix es una cadena, no un array de números.
Usas
printf("%s", &letras[i]);
para listar las letras introducidas, pero %s es para cadenas, no caracteres. Deberías usar en su lugar %c que imprime caracteres. A parte de que printf no necesita del operador & para acceder a las cadenas.
En vez de un switch/case tan largo podrías usar una notación de array sobre una cadena, tal que así:
letras[i] = "TRWAGMYFPDXBNJZSQVHLCKE"[matrix[i]%23];
si usaras matrix como un array de números.