zoukankan      html  css  js  c++  java
  • pta 习题集 5-17九宫格输入法

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

     [ 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 <string.h>
    #include <stdlib.h>
    #include <stdio.h>
    #include <math.h>
    #include <string>
    #include <map>
    
    using namespace std;
    char a[505];
    char *b[10]={"0 ","1,.?!","2ABC","3DEF",
        "4GHI","5JKL","6MNO",
        "7PQRS","8TUV","9WXYZ"
    };
    int main()
    {
        int length[10];
        for(int i=0;i<10;i++){
            length[i]=strlen(b[i]);
        }
        char x;
        int y=0;
        char s;
        do{
            s=getchar();
            if(s!=' '&&s!='
    ')
            {
                x=s;
                y++;
            }
            else{
            
                int yy;
                if(y%6==0)
                    yy=y;
                else
                    yy=y%6-1;
                printf("%c",b[x-'0'][(y-1)%length[x-'0']]);
                y=0;
    
                
            }
        }while(s!='
    ');
        return 0;
    }


  • 相关阅读:
    MVC页面打印成pdf插件Rotativa
    lambda表达式嵌套
    MVC+EF五种条件查询获取数据列表方式
    自己写的通用分页存储过程
    Llinux命令大全之软件管理命令
    .net开发 chrome核心浏览器组件
    常用的SQL日期操作
    Linux各版本介绍说明
    大数据环境搭建
    markdown语法链接新页面打开
  • 原文地址:https://www.cnblogs.com/dacc123/p/8228550.html
Copyright © 2011-2022 走看看