PTA 九宫格输入法

    xiaoxiao2021-03-25  207

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

    [ 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 <cstdio> #include <string> #include <cstring> #include <algorithm> #include <cmath> #include <queue> #include <vector> #include <set> #include <stack> #include <map> #include <climits> using namespace std; #define LL long long const int INF=0x3f3f3f3f; char ch[12][10]={"0 ","1,.?!","2ABC","3DEF","4GHI","5JKL","6MNO","7PQRS","8TUV","9WXYZ"}; char s[600]; int main() { while(gets(s)) { int len=strlen(s); s[len++]=' '; int flag,sum=0; for(int i=0;i<len;i++) { if(s[i]!=' ') { flag=s[i]-'0'; sum++; } else { int len1=strlen(ch[flag]); sum=(sum-1)%len1; printf("%c",ch[flag][sum]); sum=0; } } printf("\n"); } return 0; }

    转载请注明原文地址: https://ju.6miu.com/read-7914.html

    最新回复(0)