问题描述
输入一个十进制的整数,输出该数的十六进制表示。
输入
输入数据有多组,第一个数表示数据的组数n.
然后是n个十进制数
输出
输出为n行,每行一个对应的十六进制数。其中大于等于10的数字用大写英文字母ABCDEF表示。
输入样列
253
31
0
输出样例
FD
1F
0
解决方案
C++版本一
#include "stdio.h"
int main()
{
int n,m;
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%d",&m);
printf("%X\n",m);
}
return 0;
}
C++版本二
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
int n,m;
scanf("%d",&n);
for(int q=0;q<n;q++)
{
scanf("%d",&m);
int i=0,j,k;
// i 为十进制位数
// j 循环变量
// k 正负数标记
// a 存储每一位的值
int a[31];
//特判0
if(m==0){
printf("0\n");
continue;
}
//判断正负数标记
if(m>=0)
k=1;
else
k=-1;
//转换
while(m!=0){
a[i]=abs(m%16);
m/=16;
i++;
}
//负数负号输出
if(k==-1)
printf("-");
//输出
for(j=i-1;j>=0;j--){
if(a[j]>9){
switch (a[j])
{
case 10:printf("A");break;
case 11:printf("B");break;
case 12:printf("C");break;
case 13:printf("D");break;
case 14:printf("E");break;
case 15:printf("F");break;
}
}
else{
printf("%d",a[j]);
}
}
printf("\n");
}
return 0;
}
参考文章
https://shentuzhigang.blog.csdn.net/article/details/82899369