Eu estou com um problema nesse exercício, talvez alguém possa me ajudar.
Segue o código que eu comecei.
#include<stdio.h>
#include<stdlib.h>
int main (int argc,char *argv[])
{
char n2[4] = "abc", n3[4] = "def", n4[4] = "ghi", n5[4] = "jkl", n6[4] = "mno", n7[5] = "pqrs", n8[4] = "tuv", n9[5] = "wxyz", n[101];
int n1[100] = {0}, i, k, j, flag=0, m;
printf("Digite a sequencia numerica: ");
scanf("%[^\n]s", n);
for (k = 0; n[k]; k++); // k está no '\0' da string n
while (flag!=k-1){ // enquanto todos nos numeros nao forem '1', esse loop continua
for (i = 0; i < k ; i++) // vai percorrer a string n
{
flag = 0;
if (n[i] == '2')
{
putchar(n2[n1[i]]);
if (n[i+1]=='\0' || n[i+1]== '1')
{
n1[i]++;
for (j = i+1; j <= 100; j++) n1[j] = 0;
}
if (n1[i] == 4) n[i] = '1';
}
if (n[i] == '3')
{
putchar(n3[n1[i]]);
if (n[i+1]=='\0' || n[i+1]== '1')
{
n1[i]++;
for (j = i+1; j <= 100; j++) n1[j] = 0;
}
if (n1[i] == 4) n[i] = '1';
}
if (n[i] == '4')
{
putchar(n4[n1[i]]);
if (n[i+1]=='\0' || n[i+1]== '1')
{
n1[i]++;
for (j = i+1; j <= 100; j++) n1[j] = 0;
}
if (n1[i] == 4) n[i] = '1';
}
if (n[i] == '5')
{
putchar(n5[n1[i]]);
if (n[i+1]=='\0' || n[i+1]== '1')
{
n1[i]++;
for (j = i+1; j <= 100; j++) n1[j] = 0;
}
if (n1[i] == 4) n[i] = '1';
}
if (n[i] == '6')
{
putchar(n6[n1[i]]);
if (n[i+1]=='\0' || n[i+1]== '1')
{
n1[i]++;
for (j = i+1; j <= 100; j++) n1[j] = 0;
}
if (n1[i] == 4) n[i] = '1';
}
if (n[i] == '7')
{
putchar(n7[n1[i]]);
if (n[i+1]=='\0' || n[i+1]== '1')
{
n1[i]++;
for (j = i+1; j <= 100; j++) n1[j] = 0;
}
if (n1[i] == 5) n[i] = '1';
}
if (n[i] == '8')
{
putchar(n8[n1[i]]);
if (n[i+1]=='\0' || n[i+1]== '1')
{
n1[i]++;
for (j = i+1; j <= 100; j++) n1[j] = 0;
}
if (n1[i] == 4) n[i] = '1';
}
if (n[i] == '9')
{
putchar(n9[n1[i]]);
if (n[i+1]=='\0' || n[i+1]== '1')
{
n1[i]++;
for (j = i+1; j <= 100; j++) n1[j] = 0;
}
if (n1[i] == 5) n[i] = '1';
}
}
putchar(' ');
for (m=0; m < k; m++)
if (n[m] == '1') flag++;
}}