概述
题目描述
给定一个二进制表示的非负整数,将其转换为十六进制数。
输入
输入数据有多组,第一行为数据的组数T,接下来有T组数据。
每组数据占一行,每行为一个二进制整数(不含多余的前导0),最多1000位。
输出
输出对应的十六进制数,字母用大写表示。
样例输入 Copy
2
1111
10100100
样例输出 Copy
F
A4
#include<stdio.h>
#include<string.h>
int main()
{
int t;
char a[1000],b[1000];
int sum,i,j,m,k;
while(~scanf("%d",&t))
{
getchar();
while(t--)
{
k=0;
scanf("%s",a);
i=strlen(a)-1;
while(i>=0)
{
sum=0;m=1;
for(j=0;j<4;j++)
{
if(i<0)
break;
sum+=(a[i--]-'0')*m;
m*=2;
}
//每四位取一下
if(sum>=10)
b[k++]=sum-10+'A';
else b[k++]=sum+'0';
//判断是否需要加字母
}
for(i=k-1;i>=0;i--)
printf("%c",b[i]);
printf("n");
}
}
return 0;
}
最后
以上就是踏实纸鹤为你收集整理的进制转换II(JSU-ZJJ) 时间限制: 3 Sec 内存限制: 64 MB的全部内容,希望文章能够帮你解决进制转换II(JSU-ZJJ) 时间限制: 3 Sec 内存限制: 64 MB所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复