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

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

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

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

样例输入
  2
  39
  123ABC

样例输出
  71
  4435274

  【提示】

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

//转二进制再转八进制

#include <iostream>
#include <string>
using namespace std;int main()
{int length, n,t=0;string str[10],str1;cin >> n;for (int i = 0; i < n; i++){cin >> str[i];}for (int m = 0; m < n; m++){length = str[m].length();char a = '\0';str1 = "\0";t = 0;//十六进制转换为二进制for (int i = 0; i < length; i++){switch (str[m][i]){case '0':str1 += "0000"; break;case '1':str1 += "0001"; break;case '2':str1 += "0010"; break;case '3':str1 += "0011"; break;case '4':str1 += "0100"; break;case '5':str1 += "0101"; break;case '6':str1 += "0110"; break;case '7':str1 += "0111"; break;case '8':str1 += "1000"; break;case '9':str1 += "1001"; break;case 'A':str1 += "1010"; break;case 'B':str1 += "1011"; break;case 'C':str1 += "1100"; break;case 'D':str1 += "1101"; break;case 'E':str1 += "1110"; break;case 'F':str1 += "1111"; break;default:break;}}//修正位数if (str1.length() % 3 == 1) str1 = "00" + str1;else if (str1.length() % 3 == 2) str1 = "0" + str1;//二进制转八进制for (int i = 0; i < str1.length();){a = (str1[i++] - '0') * 4 + (str1[i++] - '0') * 2 + str1[i++];if (i == 3 && a == '0') continue;else cout << a;}cout << endl;}return 0;
}

本来想先转十进制再转八进制,可能是因为每个十六进制数长度不超过100000,数据太大,所以报错。

#include <iostream>
#include <string>
#include <cmath>
using namespace std;int main()
{int length, n;__int64 sum = 0;int t = 0;string str[10];cin >> n;for (int i = 0; i < n; i++){cin >> str[i];}for(int m=0;m<n;m++){ length = str[m].length();sum = 0;t = 0;int a[100000] = { 0 };for (int i = 0; i < length; i++){if ('A' <= str[m][i] && str[m][i] <= 'F')sum += (str[m][i] - 'A' + 10)*pow(16, length - i - 1);elsesum += (str[m][i] - '0')*pow(16, length - i - 1);}if (sum == 0){a[t++] = 0;}while (sum != 0){a[t++] = sum % 8;sum = sum / 8;}t--;for (; t >= 0; t--){cout << a[t];}cout << endl;}return 0;
}

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

  1. 蓝桥杯 基础练习 十六进制转八进制

    目录: 1.原题 2.解题思路 3.代码实现 1.原题 资源限制 内存限制:512.0MB   C/C++时间限制:1.0s   Java时间限制:3.0s   Python时间限制:5.0s问题 问 ...

  2. 蓝桥杯 基础练习 十六进制转八进制

    问题描述 给定n个十六进制正整数,输出它们对应的八进制数. 输入格式 输入的第一行为一个正整数n (1<=n<=10). 接下来n行,每行一个由0~9.大写字母A~F组成的字符串,表示要转 ...

  3. 蓝桥杯-基础练习 十六进制转八进制

    问题描述 给定n个十六进制正整数,输出它们对应的八进制数. 输入格式 输入的第一行为一个正整数n (1<=n<=10). 接下来n行,每行一个由0~9.大写字母A~F组成的字符串,表示要转 ...

  4. [蓝桥杯]基础练习 十六进制转八进制

    16进制转成2进制,2进制转成8 #include<iostream> #include<string> #include<vector>using namespa ...

  5. 蓝桥杯练习题之十六进制转八进制

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

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

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

  7. 蓝桥杯C语言 十六进制转八进制

    十六进制转八进制 思路分析: 39十六进制先转换为4位二进制,3为0011,9为1001,所以39的二进制为00111001,又把二进制转化为3位八进制,从右边开始数,001为1,111为7,所以39 ...

  8. 蓝桥杯练习:十六进制转八进制

    题目链接:十六进制转二进制 问题描述 给定n个十六进制正整数,输出它们对应的八进制数. 输入格式 输入的第一行为一个正整数n (1<=n<=10). 接下来n行,每行一个由0~9.大写字母 ...

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

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

最新文章

  1. GC garbage collection 垃圾回收机制
  2. Tableau 必知必会之使用环境的配置需求
  3. css改变谷歌浏览器的滚动条样式
  4. Java 基础——构造器和方法的区别
  5. python 定义变量_第三章(第2节):变量和常量
  6. Captaris Workflow开发系列课程介绍。
  7. RESTful中不同HTTP请求类型的含义
  8. 【问底】徐汉彬:PHP7和HHVM的性能之争
  9. linux nmon安装
  10. 水星逆行对股市涨跌的实证检验
  11. 李白最经典的20首诗排行榜
  12. SAE 联合乘云至达与谱尼测试携手共同抗疫
  13. 2023新年快乐,友盟+伴你岁岁年年
  14. 拒绝年费自己组建MarkdownNice转微信公众号格式神器
  15. gpgpu学习推荐书籍
  16. 图的拓扑排序(AOV网络)
  17. Java中判断输入错误的,判断验证码输入是否正确有关问题
  18. Realme GT2大师探索版 ROOT 解锁BL教程
  19. 成为江苏卫视《一站到底》节目站神之策略
  20. UVM通信篇之一:TLM通信概论

热门文章

  1. 科普:矩阵乘法是怎么做的?怎么判断两个矩阵是否可以相乘?不使用行列式...
  2. zabbix监控主机是否存活
  3. redis(3):安装
  4. Java抽象类/抽象方法定义及其特性详解
  5. Mac上的日记软件——day one for mac,记录您每天的故事!
  6. semantic ui框架学习笔记二
  7. java计算机毕业设计飞机航班信息查询系统MyBatis+系统+LW文档+源码+调试部署
  8. 饥荒服务器后续能修改,饥荒服务器生存改成无尽 | 手游网游页游攻略大全
  9. 任达华主演的《重回地球》宣布正式杀青
  10. ElasticSearch:为中文分词器增加对英文的支持(让中文分词器可以处理中英文混合文档)