博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
蓝桥杯 基础训练—十六进制转八进制 输入的第一行为一个正整数n (1<=n<=10)。   接下来n行,每行一个由0~9、大写字母A~F组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度
阅读量:3962 次
发布时间:2019-05-24

本文共 1051 字,大约阅读时间需要 3 分钟。

问题描述

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

输入格式

输入的第一行为一个正整数n (1<=n<=10)。

  接下来n行,每行一个由09、大写字母AF组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。

输出格式

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

注意

输入的十六进制数不会有前导0,比如012A。

  输出的八进制数也不能有前导0。

样例输入

2

39
123ABC

样例输出

71

4435274

提示

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

思路

先将16进制数转换成2进制数,再转换成8进制数。

代码:

#include
#include
char h[100002],b[400002],e[400002];int main(){
int n; scanf("%d",&n); while(n--){
scanf("%s",h); int i,len=0; /*先把16进制化成二进制——从后往前展开 */ for(i=strlen(h)-1;i>=0;i--){
int v; if(h[i]>='0' && h[i]<='9') v=h[i]-'0'; else v=h[i]-'A'+10; for(int j=0;j<4;j++){
b[len++]=v%2+'0'; v/=2; } } b[len]='\0'; int x=0,cnt=1; int l=0; for(i=0;i
=0 && e[i]=='0') /*去掉前导0*/ i--; if(i<0) printf("0"); for (;i>=0;i--){
printf("%c",e[i]); } printf("\n"); } return 0;}

转载地址:http://dvrzi.baihongyu.com/

你可能感兴趣的文章
Ruby 教程(三)
查看>>
Ruby 教程(四)
查看>>
GHOST后只剩下一个分区后的解决方法
查看>>
局部变量、全局变量、对象变量、类变量
查看>>
手动测试 VS 自动测试
查看>>
QTP基本使用——WORD
查看>>
QTP基本使用——Excel
查看>>
QTP基本使用——检查焦点
查看>>
排序算法之一
查看>>
ArrayList与Vector的区别
查看>>
QTP之描述性编程Descriptive Programming(一)
查看>>
面试题目之一
查看>>
File和Dir类介绍(一)
查看>>
Ruby之————XML创建与解析
查看>>
Ruby之————访问 FTP
查看>>
接触OSPF
查看>>
TCP/IP之一
查看>>
TCP/IP之二
查看>>
VMware 之 虚拟系统上网(Ubuntu 10.0.4)
查看>>
Ruby on Rails 新版本
查看>>