蓝桥杯 基础训练 十六进制转八进制

来源:互联网 发布:淘宝链接突然间没有了 编辑:程序博客网 时间:2024/05/29 04:23

问题描述
  给定n个十六进制正整数,输出它们对应的八进制数。
输入格式
  输入的第一行为一个正整数n (1<=n<=10)。
  接下来n行,每行一个由0~9、大写字母A~F组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。
输出格式
  输出n行,每行为输入对应的八进制正整数。
  【注意
  输入的十六进制数不会有前导0,比如012A。
  输出的八进制数也不能有前导0。
样例输入
  2
  39
  123ABC
样例输出
  71
  4435274
  提示
  先将十六进制数转换成某进制数,再由某进制数转换成八进制。


本题需要注意的是:

1、先将十六进制转换成二进制,再将二进制转换成八进制,而不是先转换成十进制;

2、对于string类型的使用;

3、转换成二进制之后需要在转换后的字符串上补‘0’,使字符串的长度为三的倍数;

4、对于某些转换成八进制之后开头为0的不能输出0,但是注意中间为0的要输出。


#include <iostream>#include <string>using namespace std;int main(){int n;cin>>n;string astr[11];int i,j,len,num;for(i=0;i<n;i++){cin>>astr[i];}for(i=0;i<n;i++){len = astr[i].length();string sum = "";for(j=0;j<len;j++)  //十六进制换二进制{switch(astr[i][j]){case '0':sum+="0000";break;case '1':sum+="0001";break;case '2':sum+="0010";break;case '3':sum+="0011";break;case '4':sum+="0100";break;case '5':sum+="0101";break;case '6':sum+="0110";break;case '7':sum+="0111";break;case '8':sum+="1000";break;case '9':sum+="1001";break;case 'A':sum+="1010";break;case 'B':sum+="1011";break;case 'C':sum+="1100";break;case 'D':sum+="1101";break;case 'E':sum+="1110";break;case 'F':sum+="1111";break;}}len = sum.length();if(len%3==1)  //补'0'sum = "00"+sum;else if(len%3==2)sum = "0"+sum;len = sum.length();for(j=0;j<len;j=j+3)  //转换八进制{int a = sum[j]-'0';int b = sum[j+1]-'0';int c = sum[j+2]-'0';num = 4*a+2*b+1*c;if(!(num==0&&j==0))  //注意开头的0不能输出cout<<num;   }cout<<endl;}return 0;}


阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 韶关人才市场招聘信息 韶关家园求职招聘 韶关找工作信息 韶关市人事网 韶关市人才市场 韶关是哪里的 韶关是哪个省的 韶关有多少个县 韶关有几个区 韶关是哪个市 韵关 绍关 韶州人才网 广东为什么不要韶关 晚韶华 咫尺韶华 满眼韶华 韶姬 韶山 韶山旅游 韶山市 韶山冲 长沙韶山 湖南韶山 长沙到韶山 到韶山 韶山门票 神奇的韶山 韶山在哪 天下韶山网 韶山滴水洞 韶山景点 韶山到长沙 韶山周边游 景点韶山 韶山一日游 韶山风景区 韶山旅游网 韶山景区 韶山纪念园 韶山 旅游