此题没有考查任何一个算法知识点,只是一道用来练代码熟悉度的题目 代码如下:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <string>
#include <cctype>
using namespace std;
bool vis[4100];
int addr=0;
int pos=0;int postmp=0;
void conv(string& s)
{    
    int len=s.size();
    for(int i=postmp;i<postmp+16&&i!=len;i++)
    {    
        if(islower(s[i]))
            printf("%c",s[i]-('a'-'A'));
        else if(isupper(s[i]))
            printf("%c",s[i]+('a'-'A'));
        else
            printf("%c",s[i]);
    }
    printf("\n");
}
void row(string& s)
{    
    printf("%04x: ",addr);
    int idx=pos;int cnt=0;int cnt2=0;
    int len=s.size();
    int col=0;
    postmp=pos; 
    for(;cnt<16&&!vis[len-1];idx++)
    {    
        printf("%02x",s[idx]);col+=2;
        vis[idx]=1;
        cnt2++;cnt++;
        if(cnt2==2)
        {
            printf(" ");col++;
            cnt2=0;
        }
    }
    for(int i=0;i<=39-col;i++)
        printf(" ");
    pos=idx;
}
int main()
{
    string str;
    while(getline(cin,str))
    {    
        addr=0;pos=0;
        memset(vis,0,sizeof(vis));
        int len=str.size();
        for(;!vis[len-1];addr+=16)
        {
            row(str);
            conv(str);
        }
        str="";
    }
    return 0;
}