十六进制转八进制
来源:互联网 发布:淘宝咸鱼pc搜索工具 编辑:程序博客网 时间:2024/05/16 10:19
题目描述:
问题描述
给定n个十六进制正整数,输出它们对应的八进制数。
输入格式
输入的第一行为一个正整数n (1<=n<=10)。
接下来n行,每行一个由0~9、大写字母A~F组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。
输出格式
输出n行,每行为输入对应的八进制正整数。
【注意】
输入的十六进制数不会有前导0,比如012A。
输出的八进制数也不能有前导0。
样例输入
2
39
123ABC
样例输出
71
4435274
【提示】
先将十六进制数转换成某进制数,再由某进制数转换成八进制。
C++实现
#include<iostream>#include<cstring>using namespace std;int main(){int n;cin>>n;string hex[n];string bin[n];for(int i=0;i<n;i++)cin>>hex[i];for(int j=0;j<n;j++)for(int i=0;i<hex[j].length();i++){switch(hex[j][i]){ case '0':bin[j] += "0000";break;case '1':bin[j] += "0001";break;case '2':bin[j] += "0010";break;case '3':bin[j] += "0011";break;case '4':bin[j] += "0100";break;case '5':bin[j] += "0101";break;case '6':bin[j] += "0110";break;case '7':bin[j] += "0111";break;case '8':bin[j] += "1000";break;case '9':bin[j] += "1001";break;case 'a':case 'A':bin[j] += "1010";break;case 'b':case 'B':bin[j] += "1011";break;case 'c':case 'C':bin[j] += "1100";break;case 'd':case 'D':bin[j] += "1101";break;case 'e':case 'E':bin[j] += "1110";break;case 'f':case 'F':bin[j] += "1111";break;default :break;}}//修正位数for(int i=0;i<n;i++){if(bin[i].length()%3==1)bin[i]="00"+bin[i];if(bin[i].length()%3==2)bin[i]="0"+bin[i];}//输出八进制for(int j=0;j<n;j++){int flag = 0; for(int i=0;i<bin[j].length();i=i+3){int x=(bin[j][i]-'0')*4+(bin[j][i+1]-'0')*2+(bin[j][i+2]-'0');if(x!=0)flag=1;if(flag==1)cout<<x;}cout<<endl;}return 0;}
0 0
- 二进制、八进制、十六进制[转]
- 蓝桥杯 十六进制转八进制
- 蓝桥杯--十六进制转八进制。。。
- 十六进制转八进制
- 十六进制转八进制
- 十六进制转八进制
- 十六进制转八进制
- 十六进制转八进制
- 十六进制转八进制
- 十六进制转八进制
- 十六进制转八进制
- 练习 十六进制转八进制
- 蓝桥杯 十六进制转八进制
- HPUOJ1292 十六进制转八进制
- 十六进制转八进制
- 十六进制转八进制
- 蓝桥杯:十六进制转八进制
- 十六进制转八进制
- 第7章 Application类(1)——程序集资源
- [00402]代理迭代
- AndroidStudio Gradle一直卡在Refreshing XXX Project
- 详解谷歌VR平台Daydream:有手柄就是不一样
- 重构:改善既有代码的设计
- 十六进制转八进制
- 英皇集团主席杨受成亲自挑选英皇集团中心的空调
- $.ajax 获取array数组 动态拼接控件
- IEC104规约的超时和报文丢失重发的处理机制
- 重构与模式
- 【机器学习笔记】1.数据归一化
- Linux tracing & locking Tools
- 英皇集团主席杨受成亲自挑选英皇集团中心的空调
- sping事务