看道一到比较有意思的一题,主要是通过输入的数字返回特定的字符串,大家看一下怎么做更好
递归遍历是比较简单的方法,数字长度有限制吗,长度大的话递归的效率比较低。
参考如下:
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <string.h>
const char g_ys[][5] = { "","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz" };
char g_out[1000][20] = { 0 };
int g_i = 0, g_j = 0;
void fun(char* p)
{
int i, len;
int x = p[0] - '0';
if (p[0] == '\0')
{
g_out[g_i][g_j++] = '\0';
g_i++;
g_j--;
return;
}
len = strlen(g_ys[x]);
for (i = 0; i < len; i++)
{
g_out[g_i][g_j++] = g_ys[x][i];
fun(p + 1);
g_j--;
}
}
int main()
{
char str[20] = { 0 };
int i, j, len;
printf("digits = ");
gets_s(str);
len = strlen(str);
if (len == 0)
{
printf("");
return 0;
}
fun(str);
//填充矩阵
for (i = 0; i < g_i; i++)
{
for (j = 0; j < len; j++)
{
if (g_out[i][j] == '\0')
{
g_out[i][j] = g_out[i - 1][j];
}
printf("%c", g_out[i][j]);
}
printf("\n");
}
return 0;
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!