基础练习 十六进制转八进制

  • 问题描述

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

  • 输入格式

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

  • 输出格式

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

  • 样例输入

       2
  39
  123ABC

  • 样例输出

        71
  4435274

  • 解题思路

可将16进制数先转为2进制数,再利用2进制数转为8进制

  • 代码如下:

#include<iostream>
#include<cstdio>
using namespace std;
char z[400000];
int main()
{string a;int j,i=0,k;int n;cin>>n;while(n--){cin>>a;i=a.length();//cout<<i<<endl;k=0;for(j=0;j<i;j++){switch(a[j]){case '0':z[k]='0';z[k+1]='0';z[k+2]='0';z[k+3]='0';k+=4;break;case '1':z[k]='0';z[k+1]='0';z[k+2]='0';z[k+3]='1';k+=4;break;case '2':z[k]='0';z[k+1]='0';z[k+2]='1';z[k+3]='0';k+=4;break;case '3':z[k]='0';z[k+1]='0';z[k+2]='1';z[k+3]='1';k+=4;break;case '4':z[k]='0';z[k+1]='1';z[k+2]='0';z[k+3]='0';k+=4;break;case '5':z[k]='0';z[k+1]='1';z[k+2]='0';z[k+3]='1';k+=4;break;case '6':z[k]='0';z[k+1]='1';z[k+2]='1';z[k+3]='0';k+=4;break;case '7':z[k]='0';z[k+1]='1';z[k+2]='1';z[k+3]='1';k+=4;break;case '8':z[k]='1';z[k+1]='0';z[k+2]='0';z[k+3]='0';k+=4;break;case '9':z[k]='1';z[k+1]='0';z[k+2]='0';z[k+3]='1';k+=4;break;case 'A':z[k]='1';z[k+1]='0';z[k+2]='1';z[k+3]='0';k+=4;break;case 'B':z[k]='1';z[k+1]='0';z[k+2]='1';z[k+3]='1';k+=4;break;case 'C':z[k]='1';z[k+1]='1';z[k+2]='0';z[k+3]='0';k+=4;break;case 'D':z[k]='1';z[k+1]='1';z[k+2]='0';z[k+3]='1';k+=4;break;case 'E':z[k]='1';z[k+1]='1';z[k+2]='1';z[k+3]='0';k+=4;break;case 'F':z[k]='1';z[k+1]='1';z[k+2]='1';z[k+3]='1';k+=4;break;}}/*for(i=0;i<k;i++)cout<<z[i];cout<<endl;*/if(k%3==0){for(i=0;i<k;){if(z[i]=='0'&&z[i+1]=='0'&&z[i+2]=='0'&&i!=0){cout<<'0';i+=3;}else if(z[i]=='0'&&z[i+1]=='0'&&z[i+2]=='0'&&i==0){i+=3;}else if(z[i]=='0'&&z[i+1]=='0'&&z[i+2]=='1'){cout<<'1';i+=3;}else if(z[i]=='0'&&z[i+1]=='1'&&z[i+2]=='0'){cout<<'2';i+=3;}else if(z[i]=='0'&&z[i+1]=='1'&&z[i+2]=='1'){cout<<'3';i+=3;}else if(z[i]=='1'&&z[i+1]=='0'&&z[i+2]=='0'){cout<<'4';i+=3;}else if(z[i]=='1'&&z[i+1]=='0'&&z[i+2]=='1'){cout<<'5';i+=3;}else if(z[i]=='1'&&z[i+1]=='1'&&z[i+2]=='0'){cout<<'6';i+=3;}else if(z[i]=='1'&&z[i+1]=='1'&&z[i+2]=='1'){cout<<'7';i+=3;}}cout<<endl;}if(k%3==1){if(z[0]=='1')cout<<'1';for(i=1;i<k;){if(z[i]=='0'&&z[i+1]=='0'&&z[i+2]=='0'){cout<<'0';i+=3;}else if(z[i]=='0'&&z[i+1]=='0'&&z[i+2]=='1'){cout<<'1';i+=3;}else if(z[i]=='0'&&z[i+1]=='1'&&z[i+2]=='0'){cout<<'2';i+=3;}else if(z[i]=='0'&&z[i+1]=='1'&&z[i+2]=='1'){cout<<'3';i+=3;}else if(z[i]=='1'&&z[i+1]=='0'&&z[i+2]=='0'){cout<<'4';i+=3;}else if(z[i]=='1'&&z[i+1]=='0'&&z[i+2]=='1'){cout<<'5';i+=3;}else if(z[i]=='1'&&z[i+1]=='1'&&z[i+2]=='0'){cout<<'6';i+=3;}else if(z[i]=='1'&&z[i+1]=='1'&&z[i+2]=='1'){cout<<'7';i+=3;}}cout<<endl;}if(k%3==2){if(z[0]=='0'&&z[1]=='1')cout<<'1';else if(z[0]=='1'&&z[1]=='0')cout<<'2';else if(z[0]=='1'&&z[1]=='1')cout<<'3';for(i=2;i<k;){if(z[i]=='0'&&z[i+1]=='0'&&z[i+2]=='0'){cout<<'0';i+=3;}else if(z[i]=='0'&&z[i+1]=='0'&&z[i+2]=='1'){cout<<'1';i+=3;}else if(z[i]=='0'&&z[i+1]=='1'&&z[i+2]=='0'){cout<<'2';i+=3;}else if(z[i]=='0'&&z[i+1]=='1'&&z[i+2]=='1'){cout<<'3';i+=3;}else if(z[i]=='1'&&z[i+1]=='0'&&z[i+2]=='0'){cout<<'4';i+=3;}else if(z[i]=='1'&&z[i+1]=='0'&&z[i+2]=='1'){cout<<'5';i+=3;}else if(z[i]=='1'&&z[i+1]=='1'&&z[i+2]=='0'){cout<<'6';i+=3;}else if(z[i]=='1'&&z[i+1]=='1'&&z[i+2]=='1'){cout<<'7';i+=3;}}cout<<endl;}}
return 0;
}

蓝桥杯-----十六进制转八进制相关推荐

  1. 蓝桥杯 十六进制转为八进制 C语言版

    ** 蓝桥杯 十六进制转为八进制 ** 题目 给定n个十六进制正整数,输出它们对应的八进制数. 输入格式 输入的第一行为一个正整数n (1<=n<=10). 接下来n行,每行一个由09.大 ...

  2. 菜菜的刷题日记 | 蓝桥杯 — 十六进制转八进制(纯手撕版)附进制转换笔记

    系列索引:菜菜的刷题日记 | 被LeetCode用Python狂虐的那段日子 万万没想到啊,回老家过年断更的几天之后,我会因为无聊在除夕这天做了会儿题,然后写篇题解. 文章目录 [题目] [我的代码] ...

  3. 蓝桥杯-十六进制转八进制(java)

    基础练习 十六进制转八进制 时间限制:1.0s 内存限制:512.0MB问题描述给定n个十六进制正整数,输出它们对应的八进制数.输入格式输入的第一行为一个正整数n (1<=n<=10).接 ...

  4. 蓝桥杯:十六进制转八进制

    基础练习 十六进制转八进制 时间限制:1.0s   内存限制:512.0MB 问题描述 给定n个十六进制正整数,输出它们对应的八进制数. 输入格式 输入的第一行为一个正整数n (1<=n< ...

  5. 蓝桥杯——十六进制转八进制(Java解法)

    这道题其实挺难的,之前做过一次,用的十六进制转化为十进制,然后用十进制再转化为八进制,代码很简单,用的jdk上自带的进制转换进行换算. import java.util.Scanner; /** * ...

  6. 蓝桥杯-十六进制转八进制

    这个题还是有点含金量,第一遍做出来,很可能会超时,比如以下代码: import java.util.ArrayList; import java.util.Scanner;public class M ...

  7. 蓝桥杯16转八c语言,蓝桥杯 十六进制转八进制

    思路: 先将十六进制转为二进制,再将二进制转为八进制 代码: #include #include #include #include #include #include #define for1(i, ...

  8. 蓝桥杯——十六进制转八进制

    资源限制 时间限制:1.0s 内存限制:512.0MB 问题描述 给定n个十六进制正整数,输出它们对应的八进制数. 输入格式 输入的第一行为一个正整数n (1<=n<=10). 接下来n行 ...

  9. 蓝桥杯 十六进制转十进制 C语言版

    蓝桥杯 十六进制转十进制 C语言版 问题描述 从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出. 注:十六进制数中的10~15分别用大写的英文字母A.B.C.D.E.F表示 ...

  10. 十进制转十六进制c语言_蓝桥杯十六进制转十进制,十进制转十六进制精简版(C++)...

    [plain] view plaincopy //十六进制转十进制 #include<iostream> using namespace std; #include<string&g ...

最新文章

  1. PyTorch中文版官方教程来啦(附下载)
  2. 超便携式截屏录屏软件FastStone Capture
  3. 终于!《iOS 全埋点解决方案》正式出版
  4. linux下jdk的安装和配置
  5. 使用React,Redux和Router进行真正的集成测试
  6. c语言不会可以学好java吗_不会C语言能学Java吗
  7. 成都理工大学工程技术学院计算机专业收分线,2019年成都理工大学工程技术学院美术类专业录取分数线...
  8. Golang生成C动态库.so和静态库.a
  9. 有关正则表达式的一些用法总结
  10. 通知 notification
  11. 杭州银行面试题【杭州多测师】【杭州多测师_王sir】
  12. 北斗/GPS差分定位技术有哪些?
  13. 计算机文件夹无法排序,文件夹下文件不能手动调整顺序?-开启Windows 7文件/文件夹手动排序功能...
  14. 2014年蓝桥杯预赛 C/C++本科B组 解题报告 史丰收速算
  15. MySQL给表和字段添加注释
  16. 华为路由器命令手册_用数据说话,华为路由Q2 Pro与网件R7800对比测评
  17. [云原生专题-29]:K8S - 核心概念 - 名字空间/命名空间概念详解与主要操作案例
  18. linux 锐捷客户端 脚本,基于802.1x的锐捷linux客户端认证方法(最新)
  19. 十四届全国大学生“恩智浦”杯智能汽车竞赛信标组总结(2)
  20. Clearing Floats清除浮动--clearfix的不同方法的使用概述

热门文章

  1. 技术 | Python从零开始系列连载(二十三)
  2. gitbook 使用命令
  3. android 利用cmdline,将參数从preloader传递到kernel
  4. Poj 2187 旋转卡壳
  5. 《R语言初学指南》一1.4 实际案例
  6. 删除已配对的View Security Server、View Replica Server
  7. 爱与光 android4.0学习
  8. SQL 复合查询条件(AND,OR,NOT)对NULL值的处理
  9. js 验证文本框为数字的正则表达式
  10. pytorch和python一样吗_PyTorch可以和TensorFlow一样快,有时甚至比TensorFlow更快了?...