把十进制整数转换为十六进制,格式为0x开头,10~15由大写字母A~F表示。
每行一个整数x,0<= x <= 2^31。
每行输出对应的八位十六进制整数,包括前导0。
0
1023
0x00000000
0x000003FF
Hint
参考大神的代码,有两种方法。
第一种:
#include <stdio.h>
int main()
{
int a;
while(scanf("%d", &a)) //输入十进制数
{
int c[8] = {0}; //定义数组表示十六进制
if(a != 0) //如果输入的十进制数不为0
for(int j = 0; j < 8; j++) //c[j]
{
c[j] = a % 16; //向十六进制转化
a /= 16;
if(a == 0) break; //如果a只剩个位数了,就跳出并结束循环
}
printf("0x");
for(int i = 7; i >= 0; i--)
{
if(c[i] >= 10) //如果位数大于十位,超出范围
{
c[i] += 55;
printf("%s", c[i]);
}
else printf("%s", c[i]);
}
printf("\n");
}
return 0;
}
然鹅……runtime error
那就用第二种方法(AC)
#include <stdio.h>
int main()
{
int a;
while(scanf("%d",&a) != EOF)
{
printf("0x%08X\n", a);//x大写
}
return 0;
}