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
",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);
       else
       {
           if(n<=16*16-1)
           printf("0x000000%X
",n);
           else
           {
               if(n<=16*16*16-1)
               printf("0x00000%X
",n);
               else
               {
                   if(n<=16*16*16*16-1)
                   printf("0x0000%X
",n);
                   else
                   {
                       if(n<=16*16*16*16*16-1)
                       printf("0x000%X
",n);
                       else
                       printf("0x00%X
",n);
                   }
               }
           }
       }

   }

return 0;

}

 

 
原文地址:https://www.cnblogs.com/zsyacm666666/p/4654849.html