设计九宫格手机输入法(附C++源码)初学C语言练手小项目!

九宫格输入法是一个很经典的输入法,当你输入每个字母的时候,它会提前显示你想输入什么单词,大大加快了人们的打字速度,尤其是在手机屏幕还比较小的时代。

下面是小编整理好的一套C/C++资料,加小编C/C++编程学习羣:825414254,获取系统性学习C/C++的学习资料

《设计九宫格手机输入法(附C++源码)初学C语言练手小项目!》

下面直接先讲数据结构吧。
《设计九宫格手机输入法(附C++源码)初学C语言练手小项目!》

从图内九宫格下面的标号可以看成,我们实际上应该从2开始,所以按键按钮应该这样定义:
《设计九宫格手机输入法(附C++源码)初学C语言练手小项目!》

然后我们还要创造一个词典,词典就是我们使用输入法的时候输入法本身就带有的词典,通过词典,我们才能提前显示用户想要输入的单词。这里我们选择手动输入词典。格式是:单词 + 权重。
《设计九宫格手机输入法(附C++源码)初学C语言练手小项目!》
权重就是这个单词的重要性,比如我们输入中文的时候:打 xiang 显示的第一个很可能是“想”这个字,而不是“像”这个字,这就是权重控制的先后顺序。现在的输入法一般都是动态设置权重,它们依据你所使用某个字的频率设置某个拼音的权重。

然后我们需要一个数组存放我们的词典。

《设计九宫格手机输入法(附C++源码)初学C语言练手小项目!》
我们需要对用户每次敲的数字进行预测,并构造前缀

存放构造的单词前缀数组:
《设计九宫格手机输入法(附C++源码)初学C语言练手小项目!》

我们先把主函数写了,再观察需要什么函数:
《设计九宫格手机输入法(附C++源码)初学C语言练手小项目!》

显然,calculate应该是个void函数,它要实现数字->字母的过程,并计算权重,决定输出的是什么。这里需要注意的是 for()里的++i和i++其实效果是一样的,只不过++i的内存开销小。
《设计九宫格手机输入法(附C++源码)初学C语言练手小项目!》

所以,我们还需要一个计算单词权重的函数:
《设计九宫格手机输入法(附C++源码)初学C语言练手小项目!》

这样就大功告成了。

完整代码:

《设计九宫格手机输入法(附C++源码)初学C语言练手小项目!》
《设计九宫格手机输入法(附C++源码)初学C语言练手小项目!》
《设计九宫格手机输入法(附C++源码)初学C语言练手小项目!》
结果如图:

《设计九宫格手机输入法(附C++源码)初学C语言练手小项目!》

点赞