c语言 九宫格输入法
假设有九宫格输入法键盘布局如下:
[ 1,.?! ] [ 2ABC ] [ 3DEF ]
[ 4GHI ] [ 5JKL ] [ 6MNO ]
[ 7PQRS ] [ 8TUV ] [ 9WXYZ ]
[ 0空 ]
请用程序实现: 对于给定的按键组合,给出该组合对应的文本。
注意: 中括号[]仅为了表示键盘的分隔,不是输入字符。每个中括号中,位于首位的数字字符即是键盘的按键,按一下即可输入该数字字符。多次按同一个键,则输入的字符依次循环轮流,例如按两次 3,则输入 D;按 5 次 7,则输入 S;按 6 次 2,则输入 A。按键 0 的输入组合是 0 和空格字符,即按两次 0 输入空格。
示例
输入
22 5555 22 666 00 88 888 7777 4444 666 44
输出
ALAN TURING`
下面是代码
#include<stdio.h>
int main()
{
char note[100];
int i=0;
int k=0;
char c[10][6] = {{'1',',','.','?','!'},{'2','A','B','C'},{'3','D','E','F'},{'4','G','H','I'},{'5','J','K','L'},{'6','M','N','O'},{'7','P','Q','R','S'},{'8','T','U','V'},{'9','W','X','Y','Z'},{'0',' '}};
gets(note);
while(note[i]!='\0')
{
if(note[i]==' ')
{
i=i+1;
}
else
{
while(note[i]==note[i+1])
{ k=k+1;
i=i+1;
}
switch(k)
{
case 0:printf("%c",c[note[i]-'0'-1][0]);
break;
case 1:printf("%c",c[note[i]-'0'-1][1]);
break;
case 2:printf("%c",c[note[i]-'0'-1][2]);
break;
case 3:printf("%c",c[note[i]-'0'-1][3]);
break;
case 4:printf("%c",c[note[i]-'0'-1][4]);
break;
}
i++;
k=0;
}
}
return 0;
}
这样写出来的
如果要求是输入1234567
输出也是1234567