我是靠谱客的博主 踏实纸鹤,这篇文章主要介绍进制转换II(JSU-ZJJ) 时间限制: 3 Sec 内存限制: 64 MB,现在分享给大家,希望可以做个参考。

题目描述
给定一个二进制表示的非负整数,将其转换为十六进制数。
输入
输入数据有多组,第一行为数据的组数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)内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部