Hola,
Le verdad que yo en ningún momento he pedido la respuesta del problema, tan solo que me dierais una orientación, es decir, una explicación de como enfocar el mismo.
Ahí va la solución del problema hecho para un array unidimensional:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 100
int i;
int length;
int ascii;
char cipher[N];
int letters[26];
int main()
{
printf("Introduce una cadena: ");
gets(cipher);
fflush(stdin);
length = strlen(cipher);
for (i=0; i<length; i++)
{
ascii = cipher;
if (ascii > 96)
ascii = ascii - 97;
else
ascii = ascii - 65;
letters[ascii]++;
}
printf("a: %d ", letters[0]);
printf("b: %d ", letters[1]);
printf("c %d ", letters[2]);
printf("d: %dn", letters[3]);
printf("e: %d ", letters[4]);
printf("f: %d ", letters[5]);
printf("g: %d ", letters[6]);
printf("h: %dn", letters[7]);
printf("i: %d ", letters[8]);
printf("j: %d ", letters[9]);
printf("k: %d ", letters[10]);
printf("l: %dn", letters[11]);
printf("m: %d ", letters[12]);
printf("n: %d ", letters[13]);
printf("o: %d ", letters[14]);
printf("p: %dn", letters[15]);
printf("q: %d ", letters[16]);
printf("r: %d ", letters[17]);
printf("s: %d ", letters[18]);
printf("t: %dn", letters[19]);
printf("u: %d ", letters[20]);
printf("v: %d ", letters[21]);
printf("w: %d ", letters[22]);
printf("x: %dn", letters[23]);
printf("y: %d ", letters[24]);
printf("z: %d ", letters[25]);
printf("nn");
system("pause");
}
Como dije, si se hacerlo con una/varias tablas unidimensionales, pues las comparas y verificas si esta o no la letra y cuantas veces se repite. En este caso, he usado los valores ASCII para determinar el carácter y almacenar el numero de veces que aparece en una tabla.