C++:蓝桥杯练习题~十六进制转八进制
来源:互联网 发布:linux 安装jdk gz文件 编辑:程序博客网 时间:2024/05/18 12:03
#include<iostream>
#include<stdio.h>
#include<string.h>
using namespace std;
char get_value(const char a)/*将每个字符转化成对应的整数*/
{
if(a>='A'&&a<='F')
return (a-'A'+10);
if(a>='0'&&a<='9')
return (a-'0');
}
int main()
{
char input[100000+1],middle[100000*4+4],output[100000*3+3];
int n,i=0,j=0,k,t;
cin>>n;
while(n--)
{
cin>>input;/*输出十六进制字符串*/
k=strlen(input);
j=0;
for(i=0;i<k;i++)/*十六进制转二进制*/
{
t=get_value(input[i]);
middle[j++]=((t>>3)&0x1);
middle[j++]=((t>>2)&0x1);
middle[j++]=((t>>1)&0x1);
middle[j++]=((t>>0)&0x1);
}
j=k*4-1;
i=(k*4+2)/3-1;
output[i+1]='\0';
for(;j>=0;j-=3)/*二进制转八进制*/
{
if(j>=2)
output[i--]=(middle[j-2]<<2|middle[j-1]<<1|middle[j])+'0';
else if(j==1)
output[i--]=(middle[j-1]<<1|middle[j])+'0';
else if(!j)
output[i--]=middle[j]+'0';
}
j=i+1;
while(output[j]=='0')j++;/*去除前导的零*/
if(output[j]=='\0')cout<<"0"<<endl;/*如果整个字符串都是零,那么结果直接输出为0*/
else printf("%s\n",&output[j]);
}
return 0;
}
#include<stdio.h>
#include<string.h>
using namespace std;
char get_value(const char a)/*将每个字符转化成对应的整数*/
{
if(a>='A'&&a<='F')
return (a-'A'+10);
if(a>='0'&&a<='9')
return (a-'0');
}
int main()
{
char input[100000+1],middle[100000*4+4],output[100000*3+3];
int n,i=0,j=0,k,t;
cin>>n;
while(n--)
{
cin>>input;/*输出十六进制字符串*/
k=strlen(input);
j=0;
for(i=0;i<k;i++)/*十六进制转二进制*/
{
t=get_value(input[i]);
middle[j++]=((t>>3)&0x1);
middle[j++]=((t>>2)&0x1);
middle[j++]=((t>>1)&0x1);
middle[j++]=((t>>0)&0x1);
}
j=k*4-1;
i=(k*4+2)/3-1;
output[i+1]='\0';
for(;j>=0;j-=3)/*二进制转八进制*/
{
if(j>=2)
output[i--]=(middle[j-2]<<2|middle[j-1]<<1|middle[j])+'0';
else if(j==1)
output[i--]=(middle[j-1]<<1|middle[j])+'0';
else if(!j)
output[i--]=middle[j]+'0';
}
j=i+1;
while(output[j]=='0')j++;/*去除前导的零*/
if(output[j]=='\0')cout<<"0"<<endl;/*如果整个字符串都是零,那么结果直接输出为0*/
else printf("%s\n",&output[j]);
}
return 0;
}
阅读全文
0 0
- C++:蓝桥杯练习题~十六进制转八进制
- 蓝桥杯练习题—— 十六进制转八进制
- 蓝桥杯练习题之十六进制转八进制
- c蓝桥杯高效实现十六进制转八进制
- 蓝桥杯 十六进制转八进制
- 蓝桥杯--十六进制转八进制。。。
- 蓝桥杯 十六进制转八进制
- 蓝桥杯:十六进制转八进制
- 蓝桥杯 十六进制转八进制
- 蓝桥杯 十六进制转八进制
- 蓝桥杯-十六进制转八进制
- 蓝桥杯-十六进制转八进制
- 蓝桥杯-十六进制转八进制
- 蓝桥杯-十六进制转八进制
- [蓝桥杯]十六进制转八进制
- [蓝桥杯]十六进制转八进制
- 蓝桥杯十六进制转八进制,大数。
- 蓝桥杯基础训练 十六进制转八进制
- java.InternalError:name is too long to represent
- 1.python类型注意点
- 算法入门经典第二版 3-4 Periodic Strings
- 【转载】使用图灵机器人接口开发微信公众号聊天功能、设置自定义菜单及申请测试账号
- 每天一个linux命令(29):chgrp命令
- C++:蓝桥杯练习题~十六进制转八进制
- 僵尸进程与孤儿进程
- Linux下ffmpeg的安装
- 快速排序
- CentOS6.5最小化安装后安装man命令
- 用JavaScript实现简单的乘法计算
- Paint 详解
- 模拟移动端上拉加载功能
- 归并排序