关闭

电话号码对应英文单词

433人阅读 评论(0) 收藏 举报
分类:
#include<iostream>
#define TelLength 3
using namespace std;
//将各个数字多能代表的字符存储在一个二维数组中
char c[10][10]=
{
 "",                     //0
 "",                     //1
 "ABC",                  //2
 "DEF",                  //3
 "GHI",                  //4
 "JKL",                  //5
 "MNO",                  //6
 "PQRS",                 //7
 "TUV",                  //8
 "WXYZ"                  //9
};
//将各个数字所能代表的字符总数记录于另一个数组中
int total[10]={0,0,3,3,3,3,3,4,3,4};
//用一个数组存储电话号码
int number[TelLength];//TelLength为电话号码的位数
//将数组目前能代表的字符在其所能代表的字符集中的位置用一个数组存储起来
int answer[TelLength];//初始化answer[i]=0
/*举个例子,若number[0]=4,即电话号码的第一位为4,若answer[0]=2,即4目前所代表的字符为
c[number[0]][answer[0]]=c[4][2]='I'*/
 
//method1直接循环法
//假设电话号码只有3位,那么很快会写出3个for循环来
void directCycle()
{
     for(answer[0]=0;answer[0]<total[number[0]];answer[0]++)
    	 for(answer[1]=0;answer[1]<total[number[1]];answer[1]++)
    		 for(answer[2]=0;answer[2]<total[number[2]];answer[2]++)
    		 {
    			 for(int i=0;i<3;i++)
    				 cout<<c[number[i]][answer[i]];
    			 cout<<endl;
    		 }
}
/*
的确,针对3位的电话号码,此3个for循环可以很好地解决问题,但是不同地区的电话号码位数不同,而且若是电话号码位数升级
了呢?那我们就必须要修改源代码去增加若干个for循环,这是一件很痛苦的事情,而且也体现不出编程之“美”来,一下对程序
做下简单修改,即可解决这样的可扩展问题
*/
//method2
void directSearch()
{
    while(true)
    {
    	for(int i=0;i<TelLength;i++)
    		cout<<c[number[i]][answer[i]];
    	cout<<endl;
    	int k=TelLength-1;
    	while(k>=0)
    	{
    		if(answer[k]<total[number[k]]-1)  
    		{
    			answer[k]++;
    			break;
    		}
    		else
    		{
    			answer[k]=0;
    			k--;
    		}
    	}
    	if(k<0)
    		break;
    }
}
//method3
/*
index说明对电话号码的第几位进行循环
*/
void RecursiveSearch(int index)
{
      if(index==TelLength)    //递归出口,当index为TelLength时,打印本次的TelLength次号码
      {
    	  for(int i=0;i<TelLength;i++)
    	  {
    		  cout<<c[number[i]][answer[i]];
    	  }
    	  cout<<endl;
    	  return ;
      }
      for(answer[index]=0;answer[index]<total[number[index]];answer[index]++)
      {
    	  RecursiveSearch(index+1);
      }
}
 
void init()
{
     for(int i=0;i<TelLength;i++)
    	 answer[i]=0;
     for(int i=0;i<TelLength;i++)
    	 cin>>number[i];
}
int main()
{
	init();
	directCycle();
	directSearch();
	RecursiveSearch(0);
	system("pause");
   return 0;
}	


0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

编程之美题之电话号码对应英文单词

题目: 电话的号码盘一般可以用于输入字母,如用2可以输入A,B,C,用3可以输入D,E,F等,对于号码5869872可以依次输出其代表的所有的字母组合。 解法一:直接循环法: #...
  • hhh3h
  • hhh3h
  • 2015-02-20 13:43
  • 726

编程之美之电话号码对应英语单词

题目一:根据电话上字母和数字的对应关系,用一个有意义的单词来表述一个电话号码,如用computer表示26678837 题目二:反过来,给定一个电话号码,是否可以用一个单词来表示呢?怎样表示最快呢?...
  • fangjian1204
  • fangjian1204
  • 2014-08-15 14:34
  • 1025

五个字的英语单词

abide v.(by)坚持,遵守 about ad. 在周围,附近,到处;大约,差不多 prep. 关于,对于;在……周围,在……附近 a.准备 above prep. 在……上面,超过,高于a...
  • tspangle
  • tspangle
  • 2014-09-29 17:55
  • 7661

开发中常用英文单词

2016-11-19 -----------------------------------------------------------------------------------------...
  • wjarvis
  • wjarvis
  • 2016-11-19 12:45
  • 859

css强制html不换行 css强制英文单词断行

css强制html不换行 css强制英文单词断行 强制不换行 div{ white-space:nowrap; } 自动换行 div{ word-wrap: break-word...
  • Doris_sun
  • Doris_sun
  • 2017-04-17 10:44
  • 1326

Java 统计英文单词

package second; import java.util.*; public class OutputWordMess { public static void main(String...
  • RSwky1220
  • RSwky1220
  • 2013-11-25 19:25
  • 3441

php杂谈【基础篇】之_7.PHP涉及的所有英文单词

php杂谈【基础篇】之_7.PHP涉及的所有英文单词拦路虎 PHP再火,也会让一部同学心生畏惧,因为看到编辑器中那一串串英文单词,担心自己英文不好,从而对能学会PHP的决心产生动摇。其实大...
  • u011513939
  • u011513939
  • 2017-07-03 07:43
  • 468

unity 3D 常见英文单词的中文意思

mute静音 Frame selected居中并最大化显示当前选中的物体 Asset资源 Dust灰尘 Misc(杂项) sparkles(闪耀) snap对齐 aspect方向 Ra...
  • u014252953
  • u014252953
  • 2015-06-07 10:01
  • 2422

Android TextView中标点符号或英文导致自动换行问题

Android的TextView在显示文字的时候有个问题就是一行还没显示满就跳到下一行,比如:原因: 1) TextView在显示中文的时候 标点符号不能显示在一行的行首和行尾,如果一个标点符号刚好...
  • ggsmite
  • ggsmite
  • 2016-07-23 01:20
  • 574

统计文本英文单词总个数,并列出每个单词的个数

package test; /* * Task :统计文本英文单词总个数,并列出每个单词的个数 * * Date:2014.02.26 * *Author:璀若星辰 * */ import...
  • u012631267
  • u012631267
  • 2014-02-26 13:48
  • 2236
    个人资料
    • 访问:93837次
    • 积分:1863
    • 等级:
    • 排名:千里之外
    • 原创:92篇
    • 转载:43篇
    • 译文:0篇
    • 评论:8条
    最新评论