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>
int main()
{
int a,b,i;
char hex[8];
while(scanf("%d",&a)!=EOF)
{
for(i=0;i<8;i++)
hex[i]='0';
i=0;
while(a>=16)
{
b=a%16;
if(b<10)
hex[i]=b+'0';
else
hex[i]=b-10+'A';
a/=16;
i++;
}
if(a<10)
hex[i]=a+'0';
else
hex[i]=a-10+'A';
printf("0x");
for(i=7;i>=0;i--)
printf("%c",hex[i]);
printf("\n");
}
return 0;
}
但是其實還有更簡單的格式輸出
#include<stdio.h>
int main()
{
int x;
while(scanf("%d",&x)!=EOF)
{
printf("0x%.8X\n",x);
}
return 0;
}
看完之後是不是想吐血,哈哈。