7-60 九宫格输入法 (15 分)

假设有九宫格输入法键盘布局如下:

[ 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

实现

#include<iostream>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;

#define rep(i,m,n) for(int i=m;i<n;i++)
#define rep1(i,m,n) for(int i=m;i>=n;i--)

int main()
{
    string s[10];
    s[1]="1,.?!";s[2]="2ABC";s[3]="3DEF";s[4]="4GHI";s[5]="5JKL";
    s[6]="6MNO";s[7]="7PQRS";s[8]="8TUV";s[9]="9WXYZ";s[0]="0 ";
    char tmp[100];
    while(cin>>tmp&&tmp[0]!='\n'){
		int index = strlen(tmp)%s[tmp[0]-'0'].length();
		if(index==0) cout << s[tmp[0]-'0'][s[tmp[0]-'0'].length()-1];
		else cout << s[tmp[0]-'0'][index-1];
    }
    return 0;
}
发布了63 篇原创文章 · 获赞 34 · 访问量 6572

猜你喜欢

转载自blog.csdn.net/SinclairWang/article/details/102979789