九宫格输入法
假设有九宫格输入法键盘布局如下:
[ 1,.?! ] [ 2ABC ] [ 3DEF ]
[ 4GHI ] [ 5JKL ] [ 6MNO ]
[ 7PQRS ] [ 8TUV ] [ 9WXYZ ]
[ 0空 ]
注意:中括号[]仅为了表示键盘的分隔,不是输入字符。每个中括号中,位于首位的数字字符即是键盘的按键,按一下即可输入该数字字符。多次按同一个键,则输入的字符依次循环轮流,例如按两次3,则输入D;按5次7,则输入S;按6次2,则输入A。按键0的输入组合是0和空格字符,即按两次0输入空格。
你需要对于给定的按键组合,给出该组合对应的文本。
*************************************************************************************************************************************
输入格式:
输入在一行中给出数个字符的按键组合(例如 999 表示按3次9),每个字符的按键组合之间用空格间隔,最后一个输入法组合之后以换行结束。输入数据至少包括一个字符的按键组合,且输入总长度不超过500个字符。
*************************************************************************************************************************************
输出格式:
在一行中输出该按键组合对应的文本。
*************************************************************************************************************************************
输入样例:
22 5555 22 666 00 88 888 7777 4444 666 44
*************************************************************************************************************************************
输出样例:
ALAN TURING
*************************************************************************************************************************************
思路:
直接就是保存下来之后输出就可以了,关键的就是按的次数超过一次循环次数时,把握好循环的结果。关键把握就是0的情况。
*************************************************************************************************************************************
代码如下:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<string.h>
using namespace std;
char a[][7]={" 0 ","!1,.?!","C2ABC","F3DEF","I4GHI","L5JKL","O6MNO","S7PQRS","V8TUV","Z9WXYZ"};
int main()
{
char b[505];
int i;
int len;
int sum,k=0,sum1=0;
while(gets(b)!=NULL)
{
len=strlen(b);
b[len]=' ';
for(i=0;i<=len;i++)
{
if(b[i]!=' ')
{
if(k==0)
{
//记录你安的是那个键
sum=b[i]-'0';
k=1;
}
//按了几次。
sum1++;
}
else
{
//去掉循环部分,去掉a[0]的那个多余的
int score=strlen(a[sum]);
score = score-1;
//判断是不是循环的
if(sum1>=score)
sum1=sum1%score;
//输出那个位置的字母
printf("%c",a[sum][sum1]);
//初始化
sum1=0;
k=0;
}
}
printf("\n");
}
return 0;
}
*************************************************************************************************************************************