CSU1160
十进制-十六进制
Time Limit: 1 Sec Memory Limit: 128 MBDescription
把十进制整数转换为十六进制,格式为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;
}