zoukankan      html  css  js  c++  java
  • 基础练习 十六进制转八进制

     #include<bits/stdc++.h>
    
     using namespace std;
     int main()
     {
         int n;
         cin>>n;
         string str;
         while(n--)
         {
             cin>>str;
             string two;
             int len=str.length();
             for(int i=0;i<len;i++)
             {
                if(str[i]=='0') two+="0000";
                else if(str[i]=='1') two+="0001";
                else if(str[i]=='2') two+="0010";
                else if(str[i]=='3') two+="0011";
                else if(str[i]=='4') two+="0100";
                else if(str[i]=='5') two+="0101";
                else if(str[i]=='6') two+="0110";
                else if(str[i]=='7') two+="0111";
                else if(str[i]=='8') two+="1000";
                else if(str[i]=='9') two+="1001";
                else if(str[i]=='A') two+="1010";
                else if(str[i]=='B') two+="1011";
                else if(str[i]=='C') two+="1100";
                else if(str[i]=='D') two+="1101";
                else if(str[i]=='E') two+="1110";
                else  two+="1111";
    
             }
             //cout<<two<<endl;
             len=two.length();
             if(len%3==1) two="00"+two;
             else if(len%3==2) two="0"+two;
             len=two.length();
             //cout<<two<<endl;
            // cout<<len<<endl;
             int *num=new int[len/3+3];
             int t;
             for(int i=len-1,t=0;i>=2;i-=3,t++)
             {
                 num[t]=two[i]-'0'+(two[i-1]-'0')*2+(two[i-2]-'0')*4;
             }
             //cout<<num[0]<<endl;
             for(int i=len/3-1;i>=0;i--)
             {
                 if(num[i]==0&&i==len/3-1) continue;
                    printf("%d",num[i]);
             }
    
             cout<<endl;
    
         }
    
     }
    View Code
      基础练习 十六进制转八进制  
    时间限制:1.0s   内存限制:512.0MB
          
    问题描述
      给定n个十六进制正整数,输出它们对应的八进制数。

    输入格式
      输入的第一行为一个正整数n (1<=n<=10)。
      接下来n行,每行一个由0~9、大写字母A~F组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。

    输出格式
      输出n行,每行为输入对应的八进制正整数。

      【注意
      输入的十六进制数不会有前导0,比如012A。
      输出的八进制数也不能有前导0。

    样例输入
      2
      39
      123ABC

    样例输出
      71
      4435274

      提示
      先将十六进制数转换成某进制数,再由某进制数转换成八进制。
     
     
     
    问题说明: 剔除输出结果首位上的0
  • 相关阅读:
    一、面试准备Java知识
    SSM框架学习之Spring学习笔记
    新年过后 第一天上班
    tomcat学习笔记
    第一次写博客
    SQL Server 2005 数据类型 .NET Framework 数据类型 LINQ 数据类型
    Winform下编译Dev控件时提示license.licx文件错误
    将C#数据转化成Word文档
    得到相同的数据 雨
    SQl 2005 存储过程分页 雨
  • 原文地址:https://www.cnblogs.com/superxuezhazha/p/5250558.html
Copyright © 2011-2022 走看看