此题没有考查任何一个算法知识点,只是一道用来练代码熟悉度的题目 代码如下:
#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;
}