电话号码对应英语单词
来源:《编程之美-----微软技术面试心得》
要求:根据一串数字输出对应在手机键盘上的相应所有字符。
#include<stdio.h>
#include<stdlib.h>
//KeyBoard二维数组记录每个数字键对应的字符集
char KeyBoard[10][10]={
"",//0
"",//1
"ABC",//2
"DEF",//3
"GHI",//4
"JKL",//5
"MNO",//6
"PQRS",//7
"TUV",//8
"WXYZ",//9此处逗号可以不要
};
//Total数组记录每个数据见能表达的字母的个数
int Total[10]={
0,//0
0,//1
3,//2
3,//3
3,//4
3,//5
3,//6
4,//7
3,//8
4//9
};
//OffSize数组记录每个字母在它所在的数字键能代表的字符集中的偏移(索引),初始化为0
int OffSize[10]={0};
int main()
{
//Number数组存放一串待处理的数字
int Number[]={2,3,4};
//n为Number数组中数字的个数
int n=sizeof(Number)/sizeof(Number[0]);
while(1)
{
for(int i=0;i<n;i++)
printf("%c",KeyBoard[Number[i]][OffSize[Number[i]]]);
printf("\n");
int k=n-1;//此句的位置很重要
while(k>=0)
{
if(OffSize[Number[k]]<Total[Number[k]]-1)
{
OffSize[Number[k]]++;
break;
}
else
{
OffSize[Number[k]]=0;
k--;
}
}
if(k<0)
break;
}
return (EXIT_SUCCESS);
}