原创 电话号码对应英文单词

2011-4-8 12:14 3882 6 6 分类: 软件与OS

来源:《编程之美-----微软技术面试心得》

要求:根据一串数字输出对应在手机键盘上的相应所有字符。

 

#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][OffSize[Number]]);
  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);
}

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
6
关闭 站长推荐上一条 /3 下一条