基础练习 十六进制转八进制  
时间限制:1.0s   内存限制:512.0MB
问题描述
  给定n个十六进制正整数,输出它们对应的八进制数。

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

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

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

样例输入
  2
  39
  123ABC

样例输出
  71
  4435274

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

 
示例代码:
 //十六进制转二进制,二进制转八进制 

 #include <iostream>
#include <map>
using namespace std; int main() {
string s; //输入的十六进制
string binaryNum; //二进制数
int n;
cin >> n; string str[] = {"", "", "", "",
"", "", "", "",
"", "", "", "",
"", "", "", ""}; map<string, string> m;
m[""] = ""; m[""] = ""; m[""] = ""; m[""] = "";
m[""] = ""; m[""] = ""; m[""] = ""; m[""] = ""; for (int i = ; i < n; i++)
{
cin >> s;
int len_s = s.length();
for(int j = ; j < len_s; j++)
{
if(s[j] > '')
{
binaryNum += str[s[j] - 'A' + ];
}
else
{
binaryNum += str[s[j] - ''];
}
} int len_b = binaryNum.length(); //二进制数的长度
if(len_b % == ) //将二进制的长度转为3的倍数
{
binaryNum = "" + binaryNum;
}
else if(len_b % == )
{
binaryNum = "" + binaryNum;
} int flag = ; //前导为0标志
string temp; //获取三位二进制数,将其转为八进制
string octalNum; //八进制数
for(int j = ; j < len_b; j += )
{
temp = binaryNum.substr(j, );
octalNum = m[temp];
if(j == && octalNum == "") //如果取出的二进制数前三位为0,则重新取接下来的3位二进制数
{
flag = ;
continue;
}
if(flag == && j == && octalNum == "") //如果接下来的二进制还为0,则继续取(后边取的肯定不是0)
{
continue;
}
cout << octalNum;
} cout << endl;
binaryNum = "";
} return ;
}

最新文章

  1. servlet内置对象
  2. js 倒计时实现
  3. Discuz 模板目录
  4. 2016年 Delphi Roadmap
  5. The Flash
  6. PixelFormat 像素格式
  7. 全国信息学奥林匹克联赛(NOIP2014)复赛 模拟题Day2 长乐一中
  8. (C语言)char类型与int类型相加
  9. 你好,C++(11)如何用string数据类型表示一串文字?根据初始值自动推断数据类型的auto关键字(C++ 11)
  10. c# splitter控件使用简介
  11. 剑指offer-面试题11.数值的整数次方
  12. spring boot 启动问题
  13. mybatis配置文件说明(configuration)
  14. Android上显示生僻字的方法
  15. 2.静态AOP实现-装饰器模式
  16. jmeter创建高级测试计划
  17. 洛谷1462(重题1951) 通往奥格瑞玛的道路(收费站_NOI导刊2009提高(2))
  18. xgboost 和GBDT的区别
  19. 用HTML+CSS实现--折叠效果
  20. Redis命令、数据结构场景、配置文件总结

热门文章

  1. 介绍几个C#正则表达式工具
  2. LeetCode 之 TwoSum
  3. scala学习手记20 - 方法返回类型推断
  4. Android View的生命周期
  5. 【C#笔札】1 string类型(2)
  6. c#实现验证某个IP地址是否能ping通
  7. CMD控制台下的JAVAC就是“不是内部或外部命令
  8. python3.7安装模块MySQLdb报错error: Microsoft Visual C++ 14.0 is required.
  9. WSL安装xfce4
  10. split方法的使用