水题。直接八位八位地枚举即可。
注意控制输出,注意读数的时候要把s中的全部元素置零。
#include#include #include using namespace std;char s[5000];void print_digit(int x){ if (x<10) printf("%d",x); else printf("%c",x-10+'a');}void digit_out(int x){ int a[4]; for (int i=0; i<4; i++) a[i]=x%16,x/=16; for (int i=3; i>=0; i--) print_digit(a[i]);}void output(int x){ digit_out(x); printf(": "); for (int i=x; i ='A' && s[i]<='Z') printf("%c",s[i]-'A'+'a'); else if (s[i]>='a' && s[i]<='z') printf("%c",s[i]-'a'+'A'); else printf("%c",s[i]); } printf("\n");}int main(){ while (gets(s)) { for (int i=0; s[i]; i+=16) { output(i); } memset(s,0,sizeof s); } return 0;}