蓝桥杯 16进制转换8进制

    xiaoxiao2021-12-12  2

    在此郑重说明:这是博主在做蓝桥杯的时候(参考卿笃军的原创http://blog.csdn.net/qingdujun/article/details/17404005),这是博主的自己做的修改版,虽然主体算法一样,如有侵犯,请莫怪。

    #include<iostream>

    #include<stdio.h> #include<String.h> using namespace std; int main(){ long n,i,j; cin>>n; string *bin=new string[n];//申请空间  string *oct=new string[n];//  string *hex=new string[n];//  for(i=0;i<n;i++){//输入16进制数  cin>>hex[i]; } i=0; for(;i<n;i++){//16进制转换2进制  j=0; while(hex[i][j]){ switch(hex[i][j]){ case '0': bin[i]+="0000"; break; case '1': bin[i]+="0001"; break; case '2': bin[i]+="0010"; break; case '3': bin[i]+="0011"; break; case '4': bin[i]+="0100"; break; case '5': bin[i]+="0101"; break; case '6': bin[i]+="0110"; break; case '7': bin[i]+="0111"; break; case '8': bin[i]+="1000"; break; case '9': bin[i]+="1001"; break; case 'A': bin[i]+="1010"; break; case 'B': bin[i]+="1011"; break; case 'C': bin[i]+="1100"; break; case 'D': bin[i]+="1101"; break; case 'E': bin[i]+="1110"; break; case 'F': bin[i]+="1111"; break; default: break; } j++; } // cout<<bin[i]<<endl; } int temp=0,sum=0; long length; for(i=0;i<n;i++){//2进制转换8进制  length=bin[i].size()-1;//得到它的大小; while(bin[i][length]&&length>=0){ temp=3; while(temp--&&length>=0){ if('1'==bin[i][length]) switch(temp){ case 2: sum+=1; break; case 1: sum+=2; break; case 0: sum+=4; break; default: break; } length--; } oct[i]+=(sum+'0'); sum=0; } //cout<<oct[i]<<endl; } for(i=0;i<n;i++){//逆输出  int flag=1; length=oct[i].size()-1; while(length>=0){ while('0'==oct[i][length]&&flag==1)//去除前面的零  { length--; } flag=0; cout<<oct[i][length]; length--; } cout<<endl; } return 0; }
    转载请注明原文地址: https://ju.6miu.com/read-900204.html

    最新回复(0)