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
    AC代码:
    #include <iostream>
    #include<stdio.h>
    #include <algorithm>
    #include<string.h>
    #define ll long long
    using namespace std;
    int main()
    {
        char c;
        int t,x,r;
        char a[100005];
        int b[400005];
    
        scanf("%d",&t);
        while(t--)
        {
            string s="";            ///每次字符串更新
            scanf("%s",a);
            int len=strlen(a);      ///16进制的长度
            for(int i=0;i<len;i++)  ///变成二进制
            {
    
                if(a[i]>='0' && a[i]<='9')///获取当前位的十六进制值
                    x=a[i]-'0';
                else
                    x=a[i]-'A'+10;
    
                for(int j=3;j>=0;j--)
                {
                    r=x%2;
                    x=x>>1;
                    b[i*4+j]=r;
                }
            }
            len = len*4;
            r=len%3;
            for(int i=len-1;i>1;i=i-3)    ///二进制,三位二进制变一位八进制
            {
                x=b[i]+b[i-1]*2+b[i-2]*4;
                c=x+'0';
                s=(c)+s;
            }
            if(r==2)                       ///左边位数不够则不累加
            {
                x=b[1]+b[0]*2;
                c=x+'0';
                s=c+s;
            }
            else if(r==1)
            {
                x=b[0];
                c=x+'0';
                s=c+s;
            }
            if(s[0]=='0')       ///首位是0则
                s=s.substr(1);  ///截取当前下标到末尾
            cout<<s<<"
    ";
    
        }
        return 0;
    }
  • 相关阅读:
    google的开源项目总结
    Google Breakpad 完全解析(二) —— Windows前台实现篇
    Google Breakpad 完全解析(一) —— Windows入门篇
    PVS-Studio静态通用分析规则
    C,C++开源项目中的100个Bugs
    一日一点RakNet(3)--介绍
    C++开源跨平台类库集
    如何实现数组的随机排序?
    JavaScript原型,原型链 ? 有什么特点?
    js的基本数据类型
  • 原文地址:https://www.cnblogs.com/shoulinniao/p/10187780.html
Copyright © 2011-2022 走看看