hdu 4690 EBCDIC(打表)

题目链接:

http://acm.hdu.edu.cn/showproblem.php?pid=4690

解题思路:

题目大意:

给出两个字符表,要求你对输入的字符信息转换成第二个表的字符信息。输入包含一对对十六进制的数(X,Y),表示该字符在第一个字符表的第X行第Y列上,

然后要你输出该字符在第二个字符表的坐标(X2,Y2)。

输入:一行由大写16进制数字组成的字符串(每两个数表示一个字符在表一中的坐标)。

输出:对面的字符表二的坐标。

AC代码:

#include <iostream>
#include <cstdio>
using namespace std;

string A[16][16] = {"NUL","SOH","STX","ETX","","HT","","DEL","","","","VT","FF","CR","SO","SI",
                   "DLE","DC1","DC2","DC3","","","BS","","CAN","EM","","","IFS","IGS","IRS","IUS ITB",
                   "","","","","","LF","ETB","ESC","","","","","","ENQ","ACK","BEL",
                   "","","SYN","","","","","EOT","","","","","DC4","NAK","","SUB",
                   "SP","","","","","","","","","","",".","<","(","+","|",
                   "&","","","","","","","","","","!","$","*",")",";","",
                   "-","/","","","","","","","","","",",","%","_",">","?",
                   "","","","","","","","","","`",":","#","@","'","=","""",
                   "","a","b","c","d","e","f","g","h","i","","","","","","",
                   "","j","k","l","m","n","o","p","q","r","","","","","","",
                   "","~","s","t","u","v","w","x","y","z","","","","","","",
                   "^","","","","","","","","","","[","]","","","","",
                   "{","A","B","C","D","E","F","G","H","I","","","","","","",
                   "}","J","K","L","M","N","O","P","Q","R","","","","","","",
                   "\\","","S","T","U","V","W","X","Y","Z","","","","","","",
                   "0","1","2","3","4","5","6","7","8","9","","","","","",""};

string B[8][16] = {"NUL","SOH","STX","ETX","EOT","ENQ","ACK","BEL","BS","HT","LF","VT","FF","CR","SO","SI",
                  "DLE","DC1","DC2","DC3","DC4","NAK","SYN","ETB","CAN","EM","SUB","ESC","IFS","IGS","IRS","IUS ITB",
                  "SP","!","""","#","$","%","&","'","(",")","*","+",",","-",".","/",
                  "0","1","2","3","4","5","6","7","8","9",":",";","<","=",">","?",
                  "@","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O",
                  "P","Q","R","S","T","U","V","W","X","Y","Z","[","\\","]","^","_",
                  "`","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o",
                  "p","q","r","s","t","u","v","w","x","y","z","{","|","}","~","DEL"};

int main(){
    char a,b;
    while(1)
    {
        a = getchar();
        if(a == '\n')
            break;
        b = getchar();
        int aa,bb;
        if(a >= 'A' && a <= 'F')
            aa = a-'A'+10;
        if(a >= '0' && a <= '9')
            aa = a-'0';
        if(b >= 'A' && b <= 'F')
            bb = b-'A'+10;
        if(b >= '0' && b <= '9')
            bb = b-'0';
        for(int i = 0; i < 8; i++)
        {
            for(int j = 0; j < 16; j++)
                if(B[i][j] == A[aa][bb])
                {
                    a = i+'0';
                    if(j >=0 && j <= 9)
                        b = j+'0';
                    else
                        b = j-10+'A';
                    break;
                }
        }
       printf("%c%c",a,b);
    }
    printf("\n");
    return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值