• 水题T,二进制转16进制


    输入一个2进制的数,要求输出该2进制数的16进制表示。 
    在16进制的表示中,A-F表示10-15 
    Input第1行是测试数据的组数n,后面跟着n行输入。每组测试数据占1行,包括一个以0和1组成的字符串,字符串长度至少是1,至多是10000Outputn行,每行输出对应一个输入。Sample Input

    2
    100000
    111
    

    Sample Output

    20
    7

    2进制转换成16进制。
    从后面开始,每四位换成一个数,0123456789ABCDEF,不足4位在前面用0补上。

    程序一直出问题,因为定义的是char型的数组,所以操作的时候必须用'0' 'A'等等。
    #include <bits/stdc++.h>
    using namespace std;
    char s1[10005];
    char convert[] = "0123456789ABCDEF";
    
    
    int main(){
    	int n; 
    	cin>>n;
    	getchar();
    	while(n--){
    		char s3[10000]={0};//存放结果
    		gets(s1+4);
    		s1[0] = s1[1] = s1[2] = s1[3] = '0';  //令前四位为0
    		int len1 = strlen(s1);
    		int m = 4;
    		if(len1%4) m = len1%4; 
    		
    
    		int j = 0;
    		for(int i = m; i < len1; i+=4) 
    		{
    			s3[j] = convert[(s1[i]-'0')*8 + (s1[i+1]-'0')*4 + (s1[i+2]-'0')*2 + (s1[i+3]-'0')];
    
    			j++;
    		}
    		cout<<s3<<endl;
    	}
    	return 0;
    }
    
  • 相关阅读:
    2014年广州区域赛k题解
    2014年广州区域赛e题解
    2014年广州区域赛i题解
    最大化平均值问题
    codeforces 976e 题解
    maven
    机器学习入门
    拟合
    插值
    熵权法
  • 原文地址:https://www.cnblogs.com/stul/p/9955348.html
Copyright © 2020-2023  润新知