Hola César, gracias por corregir el ejercicio.
Dejo los dos ejercicios por separado, para que se vea mejor.
Ejercicio 1:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
    typedef char TipoCadenas[50]; //
    TipoCadenas cadenas[3];
    int i = 0;
    for(i = 0; i < 3; i++){ // Se piden tres cadenas de texto
        printf("Introduzca una cadena de texto: ");
        gets(cadenas[i]);
    }
    puts("");
    for(i = 0; i < 3; i++){ // Se muestran las tres cadenas de texto
        printf("\tEl n\xA3mero de letras de la cadena %d, \"%s\" es %d letras.\n", i+1, cadenas[i], strlen(cadenas[i]));
    }
}
Ejercicio 2:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
    typedef char TipoCadenas[50]; //
    TipoCadenas cadenas[3];
    TipoCadenas nuevaCadena[3];
    int i = 0;
    int j = 0;
    int resComparacion = 0;
    for(i = 0; i < 3; i++){ // Se piden tres cadenas de texto
        printf("Introduzca una cadena de texto: ");
        gets(cadenas[i]);
    }
    for(i=0; i<3; i++){ // Se recuperan las dos primeras letras de cada cadena de texto y se guardan en una variable.
        for(j=0; j<3; j++){
            if(j==2){
                nuevaCadena[i][j] = '\0'; // Después de recuperar las dos letras, introducimos el final de cadena.
            }else{
                nuevaCadena[i][j] = cadenas[i][j];
            }
        }
    }
    printf("\nEl resultado de concatenar las dos primeras letras de las cadenas es: \"%s\".\n\n",
            strcat(strcat(nuevaCadena[0], nuevaCadena[1]), nuevaCadena[2]));
    resComparacion = strcmp(cadenas[0], cadenas[1]);
    if (resComparacion ==0) {
        printf("La primera cadena, \"%s\", es igual a la segunda cadena, \"%s\".\n", cadenas[0], cadenas[1]);
    } else {
        printf("La primera cadena, \"%s\", no es igual a la segunda cadena, \"%s\".\n", cadenas[0], cadenas[1]);
    }
    return 0;
}
Saludos.