zoukankan      html  css  js  c++  java
  • 十六进制转换为八进制

    问题描述
      给定n个十六进制正整数,输出它们对应的八进制数。

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

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

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

    样例输入
      2
      39
      123ABC

    样例输出
      71
      4435274

      提示
      先将十六进制数转换成某进制数,再由某进制数转换成八进制。

    #include<iostream>
    using namespace std;
    int main()
    {
        int n;
        cin>>n;
        for(int i=0;i<n;++i)
        {
            string str,str2="",str8="";    
            cin>>str;
            int len=str.length();
            for(int j=0;j<len;++j)
            {
                switch(str[j])
                {
                    case '0' : str2+="0000";break;
                    case '1' : str2+="0001";break;
                    case '2' : str2+="0010";break;
                    case '3' : str2+="0011";break;
                    case '4' : str2+="0100";break;
                    case '5' : str2+="0101";break;
                    case '6' : str2+="0110";break;
                    case '7' : str2+="0111";break;
                    case '8' : str2+="1000";break;
                    case '9' : str2+="1001";break;
                    case 'A' : str2+="1010";break;
                    case 'B' : str2+="1011";break;
                    case 'C' : str2+="1100";break;
                    case 'D' : str2+="1101";break;
                    case 'E' : str2+="1110";break;
                    case 'F' : str2+="1111";break;
                }    
            }
            int len2=str2.length();
            if(len2%3==1) 
            {
                str2="00"+str2;
                len2+=2;
            } 
            else if(len2%3==2)
            {
                str2="0"+str2;
                ++len2;
            }
            for(int j=0;j<len2-2;j+=3)
            {
                int s8=(str2[j]-'0')*4+(str2[j+1]-'0')*2+str2[j+2]-'0';
                str8+='0'+s8;
            }
            int p=0;
            while(str8[p]=='0') ++p;
            int len8=str8.length();
            for(int j=p;j<len8;++j)
            {
                cout<<str8[j];
            }
            cout<<endl;
        }
        return 0;
    }
  • 相关阅读:
    C#使用Json
    JQuery AJAX介绍
    封装一个自己的 Ajax小框架
    AJAX跨域实现
    AJAX 一些常用方法
    完整的 AJAX 写法(支持多浏览器)
    AJAX 简单上手
    利用反射生成SQL语句
    访问Access数据库(有多个数据库时 体现多态)
    DataTable操作(建表,建行,建列,添加数据)
  • 原文地址:https://www.cnblogs.com/Cnxz/p/12736908.html
Copyright © 2011-2022 走看看