CSU1160

十进制-十六进制

Time Limit: 1 Sec  Memory Limit: 128 MB

Description

 把十进制整数转换为十六进制,格式为0x开头,10~15由大写字母A~F表示。

Input

 每行一个整数x,0<= x <= 2^31。

Output

 每行输出对应的八位十六进制整数,包括前导0。

Sample Input

0
1023

Sample Output

0x00000000
0x000003FF

这道题原本应该很简单,像这样:

#include<stdio.h> #include"iostream" using namespace std; int main() { int x; while(cin>>x) { printf("0x%.8X\n",x); } return 0; }

完全是格式控制的问题,但~~
当时竟然想出了一个不是办法的办法

#include"iostream" #include"stdio.h" #include"fstream" using namespace std; const int maxn=110; int main() { int n; while(scanf("%d",&n)!=EOF) { if(n<=16-1) printf("0x0000000%X\n",n); else { if(n<=16*16-1) printf("0x000000%X\n",n); else { if(n<=16*16*16-1) printf("0x00000%X\n",n); else { if(n<=16*16*16*16-1) printf("0x0000%X\n",n); else { if(n<=16*16*16*16*16-1) printf("0x000%X\n",n); else printf("0x00%X\n",n); } } } } } return 0; }

 

 

你可能感兴趣的:(su)