zoukankan      html  css  js  c++  java
  • 蓝桥杯十六进制转化为八进制

    十六进制转化为八进制:

    1,首先将十六进制转化为二进制,再将二进制转化为八进制;

    2,将十六进制转化为二进制用了switch语句的“蒟蒻”方法来写的;

    3,将二进制转化为八进制,三位三位的进行转化:如二进制001转化为八进制:0*4+0*2+1*1;

     1 #include <iostream>
     2 #include <string>
     3 using namespace std;
     4 int arr[10000001];
     5 int main()
     6 {
     7     int n,lengt,i,j;
     8     string str,str2;
     9     cin>>n;
    10     while(n--)
    11     {
    12         cin>>str;
    13         lengt=str.length();
    14         str2="";
    15 //将十六进制的数转化为二进制的数
    16         for(i=0;i<lengt;++i)
    17         {
    18             switch(str[i])
    19             {
    20                 case '0':str2+="0000";break;
    21                 case '1':str2+="0001";break;
    22                 case '2':str2+="0010";break;
    23                 case '3':str2+="0011";break;
    24                 case '4':str2+="0100";break;
    25                 case '5':str2+="0101";break;
    26                 case '6':str2+="0110";break;
    27                 case '7':str2+="0111";break;
    28                 case '8':str2+="1000";break;
    29                 case '9':str2+="1001";break;
    30                 case 'A':str2+="1010";break;
    31                 case 'B':str2+="1011";break;
    32                 case 'C':str2+="1100";break;
    33                 case 'D':str2+="1101";break;
    34                 case 'E':str2+="1110";break;
    35                 case 'F':str2+="1111";break;
    36                 default:break;    
    37             }
    38         }
    39 //因为二进制转化为八进制是三位三位的计算,所以对3取余。然后根据具体情况向前补零
    40         if(lengt%3==1) str2="00"+str2;
    41         else if(lengt%3==2) str2="0"+str2;
    42         lengt=str2.length(); 
    43         j=0;
    44 //解决位数问题以后,开始从前往后进行二进制到八进制的转化
    45         for(i=0;i<=lengt-2;i+=3)
    46         {
    47             arr[j]=(str2[i]-'0')*4+(str2[i+1]-'0')*2+(str2[i+2]-'0');
    48             ++j;
    49         }
    50 //判断前导是否为零,若为零跳过,直到不为零正序输出
    51         for(i=0;i<j;++i)
    52         {
    53             if(i==0&&arr[i]==0) continue;
    54             cout<<arr[i];
    55         }
    56         cout<<endl;
    57     }
    58     return 0;
    59 } 
    View Code

    借鉴其他大神的代码

  • 相关阅读:
    第二次博客作业
    C博客作业00--我的第一篇博客
    第1次任务:购物车程序的面向对象设计
    DS博客作业05--查找
    DS博客作业04--图
    DS博客作业03--树
    DS博客作业02--栈和队列
    C博客作业05-指针
    C博客作业04--数组
    C博客作业03--函数
  • 原文地址:https://www.cnblogs.com/corald-88/p/8619579.html
Copyright © 2011-2022 走看看