问题描述
  给定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. 简明 Vim 练级攻略(转)
  2. 万维网源代码以 NFT 形式拍卖,价值或超 4.5 亿?
  3. poj 1740 A New Stone Game 博弈
  4. 【教程】TestComplete测试桌面应用程序教程(四)
  5. 采集Nginx日志的几种方式
  6. 第三部分:Idea重构总结
  7. VTK:地形抽取用法实战
  8. Linux 系统如何调整时区和时间
  9. 信息学奥赛一本通 1005:地球人口承载力估计| OpenJudge NOI 小学奥数 7653
  10. 19.CSS background
  11. Linux学习总结(36)——创建、复制、剪切、重命名、清空和删除文件夹的命令
  12. Min(BZOJ 1441)
  13. 51单片机简易烧录方法
  14. Enterprise Architect Professional Edition
  15. 用一年的数据预测下一年数据_一年的招聘数据中的经验教训
  16. Android Studio文本编辑框EditText
  17. 强制清理CDN(DNS)缓存方法
  18. 一文看懂未来加密行业如何应对监管?
  19. oracle ins ctx.mk,(原创)RHEL/CentOS 6.x 64位安装Oracle11gR2 64位出现ins_ctx.mk报错解决...
  20. JAVA EE--13元老

热门文章

  1. 关于MySQL中的mysqldump饬令的应用
  2. toad for mysql_toad for mysql
  3. [WUSTCTF2020]佛说:只能四天
  4. mysql geo_MySQL GEO 字段类型说明及案例
  5. 【毕业设计】基于红外热释电的房间人数计数系统 - 单片机 物联网嵌入式
  6. 普中科技单片机HC6800-EM3 V3.0资料下载
  7. Android变成setContentView()报错空指针异常
  8. 搜索蜘蛛爬行路径以及行为
  9. 虚拟服务器怎么安装网站控制面板,如何在虚拟主机上安装网站模板
  10. 数据通信与网络(五)