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

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

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

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

样例输入
  2
  39
  123ABC

样例输出
  71
  4435274

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

我的想法:

复习的时候发现这种简单题竟然不会!?相当受打击了,一开始的想法是将输入的十六进制数强转为十进制,再按照公式转为八进制,可题目给的数据挺大的,肯定会超时,网上搜了答案都是转为二进制再转八进制,按照自己思路整理了一下,方便复习。

代码如下:

#include<iostream>
#include<cstring>
using namespace std;
void trans(string s)
{int len1=s.size();string res1="";for(int i=0;i<len1;i++)//十六进制转八进制 {switch(s[i]){case '0': res1 += "0000";break;case '1': res1 += "0001"; break;case '2': res1 += "0010"; break;case '3': res1 += "0011"; break;case '4': res1 += "0100"; break;case '5': res1 += "0101"; break;case '6': res1 += "0110"; break;case '7': res1 += "0111"; break;case '8': res1 += "1000"; break;case '9': res1 += "1001"; break;case 'A': res1 += "1010"; break;case 'B': res1 += "1011"; break;case 'C': res1 += "1100"; break;case 'D': res1 += "1101"; break;case 'E': res1 += "1110"; break;case 'F': res1 += "1111"; break;}    }if(res1.size()%3==1) res1="00"+res1;if(res1.size()%3==2) res1="0"+res1;string res2="";int len2=res1.size();for(int i=0;i<len2;i+=3){string t=res1.substr(i,3);if(i==0&&t=="000") res2 +="";//避免因为000导致转换为八进制时有前导0else res2 +=((4*(t[0]-'0')+2*(t[1]-'0')+(t[2]-'0')))+'0'; }cout<<res2<<endl;}
int main()
{//进制转换int n;cin>>n;string dates[n];//存储输入string字符串 for(int i=0;i<n;i++){cin>>dates[i];}for(int i=0;i<n;i++)//遍历每一个字符串进行转换 {trans(dates[i]);}return 0;
}

蓝桥杯基础练习之十六进制转八进制相关推荐

  1. 蓝桥杯练习:C语言十六进制转八进制

    这题对我来说是有点难度的,最后做出来,但是提交显示 运行错误,看不出哪里出错了. 我的思路: 将十六进制转化为二进制,二进制最后转化为八进制. 首先将十六进制存入数组,然后将数组中每一位转化为对应的十 ...

  2. 蓝桥杯简单题之十六进制转八进制(JAVA版)

    首先对等待程序猿成长之路系列的小伙伴们说声抱歉,春节来临,可能要拖更一段时间,但是草稿已经在写,发布将会于春节后进行发布 春节第一天闲着无聊打算找个蓝桥杯的题目练练手,诶嘿,这就找到一题,话不多说,上 ...

  3. 蓝桥杯基础练习之十六进制转十进制(python实现)

    (资源限制 时间限制:1.0s 内存限制:512.0MB 问题描述 从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出. 注:十六进制数中的10~15分别用大写的英文字母A. ...

  4. 蓝桥杯基础练习合集一(C语言) 1.A+B问题2.数列排序3.十六进制转八进制4.十六进制转十进制5.十进制转十六进制

    目录 1.A+B问题 2.数列排序 3.十六进制转八进制 4.十六进制转十进制 5.十进制转十六进制 1.A+B问题 问题描述 输入A.B,输出A+B. 输入格式 输入的第一行包括两个整数,由空格分隔 ...

  5. 蓝桥杯 基础练习 十进制转十六进制(C++)

    蓝桥杯 基础练习 十进制转十六进制(C++) 最近自己在练习,将正确的代码分享同时也是记录便于查看.但有的可能写的太复杂,不一定是最简便的代码. 这个是我最近学习了一点关于栈的算法,利用栈来写的 问题 ...

  6. 蓝桥杯——基础练习——十六进制转十进制

    package com.study.蓝桥杯.基础练习;/* 问题描述从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出.注:十六进制数中的10~15分别用大写的英文字母A.B ...

  7. 蓝桥杯 基础练习全解 答案+解析 共17题 python

    关键字 A+B问题,数列排序,十六进制转八进制,十六进制转十进制,十进制转十六进制,特殊回文数,回文数,特殊的数字,杨辉三角形,查找整数,数列特征,字母图形,01字串,闰年判断,斐波那契数列,圆的面积 ...

  8. 蓝桥杯基础视频 笔记

    学习地址:哔哩哔哩网站--蓝桥杯基础视频         博主整理--源码下载--百度网盘链接 蓝桥杯 Java B组 省赛真题详解及小结汇总[2013年(第4届)~2020年(第11届)] 注意:部 ...

  9. 蓝桥杯基础-【切面条】不用画图的解题思路

    我们先来看[切面条]的题目: 一根高筋拉面,中间切一刀,可以得到2根面条. 如果先对折1次,中间切一刀,可以得到3根面条. 如果连续对折2次,中间切一刀,可以得到5根面条. 那么,连续对折10次,中间 ...

最新文章

  1. 学习_你必须知道的.net2_第四章_一切从IL开始
  2. python做的项目管理软件_幽雅的使用Python之软件管理
  3. 【AAAI 2018】腾讯 AI Lab 11篇论文精选:图像描述、NMT 模型、图卷积神经网络、DNN优化等
  4. render与render_to_response的区别
  5. Deepin 下安装 LAMP
  6. 在程序里面(服务器端)调用Winrar压缩文件的方法?另寻求一条语句转换的方法。vb.net到C#。...
  7. 好好的虚拟机不能用了, 出现无法打开内核设备\\.\Global\vmx86: 系统找不到指定的文件的错误, 以下是网上找到的解决方法,亲测可用...
  8. C# EF 与 MySql 的那些坑
  9. mdf和ldf是什么文件
  10. 解决eclipse反编译乱码
  11. 按头安利 好看又实用的布纹 布料贴图素材看这里
  12. 【Unity 题型】Unity基础
  13. 阳历和农历互相转换的js代码
  14. EXFO max-715b光纤测试仪参数介绍
  15. “阿里云OS”是如何失控的
  16. 科斯定理-载罗纳德·科斯
  17. Excel 美化要点
  18. N子棋(外加双人对战)详解!推荐!!!
  19. 机器博弈游戏规则 德扑和德扑变种
  20. 如何使用Google Ads跑联盟Offer – Keywords

热门文章

  1. 阅读和实践是最好的老师
  2. 连续六个季度实现盈利改善,达达集团内外双重确定性凸显
  3. 魔兽私服服务端 MANGOS 数据库结构表中文解释
  4. 数据分析——逻辑树模式
  5. A/B compartment:染色质区室简介
  6. 福州发生持刀伤人事件:1死19伤 警方全力追捕嫌犯
  7. JAVA小tips--Scanner.nextLine()与Scanner.next()及其他的差别
  8. 宝塔部署Django
  9. [转]手机按键生产工艺简介
  10. @2021考生,研招网再次开通下载《准考证》功能,查分不愁啦