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

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

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

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

样例输入
  2
  39
  123ABC

样例输出
  71
  4435274

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

 
作者注释:正如锦囊和题目提示所说:先将十六进制化成二进制,在每三位一组转成八进制,不够位0补之就行了——用数学方法计算也是这样嘛,用二进制做“中间人”!
 #include<stdio.h>
#include<string.h> char h[],b[],e[];
int main(){
int n;
scanf("%d",&n);
while(n--){
scanf("%s",h);
int i,len=;
/*先把16进制化成二进制——从后往前展开 */
for(i=strlen(h)-;i>=;i--){
int v;
if(h[i]>='' && h[i]<='')
v=h[i]-'';
else v=h[i]-'A'+;
for(int j=;j<;j++){
b[len++]=v%+'';
v/=;
}
}
b[len]='\0';
int x=,cnt=;
int l=;
for(i=;i<len;i++){
/*每三位二进制转成一位8进制,最后不足三位补0*/
if(cnt==||i==len-){
x=cnt*(b[i]-'')+x;
cnt=;
e[l++]=x+'';
x=;
} else{
x=cnt*(b[i]-'')+x;
cnt*=;
}
}
i=l-;
while(i>= && e[i]=='')
/*去掉前导0*/
i--;
if(i<)
printf("");
for (;i>=;i--){
printf("%c",e[i]);
}
printf("\n");
}
return ;
}

C语言 · 十六进制转八进制的更多相关文章

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

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

  2. lqb 基础练习 十六进制转八进制 (字符串进行进制转化)

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

  3. Java实现蓝桥杯十六进制转八进制

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

  4. Go语言十六进制转十进制

    Go语言十六进制转十进制 代码Demo import ( "fmt" "strconv" "testing" ) func Test_1(t ...

  5. c语言二进制、八进制、十六进制

    int binary = 0b01000010; //二进制 printf("%d\n", binary); //十进制 printf("0x%x\n", 0x ...

  6. 蓝桥杯 十六进制转八进制(超大测试数据,java实现)

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

  7. 蓝桥网试题 java 基础练习 十六进制转八进制

    - -------------------------------------------------------------------------------------------------- ...

  8. C# 判断字符串是否符合十六进制,八进制,二进制和十进制整数格式的正则表达式

    /// <summary> /// 判断是否十六进制格式字符串 /// </summary> /// <param name="str">< ...

  9. 算法笔记_033:十六进制转八进制(Java)

    目录 1 问题描述 2 解决方案 2.1 注意问题 2.2 具体实现代码   1 问题描述 具体问题描述 给定n个十六进制正整数,输出它们对应的八进制数. 输入格式 输入的第一行为一个正整数n (1& ...

随机推荐

  1. How to forcefully delete a daemonset or a pod in kubernetes cluster

    I have setup a kubernetes cluster which is working fine. I created deployment with type as daemonset ...

  2. Python中 append 和 extend 的区别

    Python中Lists 的两个方法: append 和 extend : list.append(object) 向列表中添加一个对象object.append 接受一个参数,这个参数可以是任何数据 ...

  3. eclipse svn登陆用户保存信息删除

    win7系统 eclipse svn saveinfo path:磁盘:\%用户名%\AppData\Roaming\Subversion\auth\svn.simple 例如:D:\Users\用户 ...

  4. Java虚拟机学习 - JDK可视化监控工具 ( 7 )

    1.JConsole JConsole工具在JDK/bin目录下,启动JConsole后,将自动搜索本机运行的jvm进程,不需要jps命令来查询指定.双击其中一个jvm进程即可开始监控,也可使用“远程 ...

  5. 【java设计模式】之 责任链(chain of resposibility)模式

    责任链模式,顾名思义,就是一条链.这个链到底是怎么运行的呢?它主要是将能够处理同一类请求的对象连成一条链,所提交的请求沿着链传递,链上的对象逐个判断是否有能力处理该请求,如果能则处理,如果不能则传递给 ...

  6. mongoDB系列之(二):mongoDB 副本集

    1. 什么是副本集 副本集就是mongoDB副本所组成的一个集群. 同期原理是,写操作发生在主库,从库同步主库的OpLog日志. 集群中没有特定的主库,主库是选举产生,如果主库down了,会再选举出一 ...

  7. Zookeeper监控工具

    Zookeeper的常用开源监控工具可以参考:http://zqhxuyuan.github.io/2016/12/31/BigData-Monitor-Tool

  8. pythonl学习笔记——爬虫的基本常识

    1 robots协议 Robots协议(也称为爬虫协议.机器人协议等)的全称是“网络爬虫排除标准”(Robots Exclusion Protocol),网站通过Robots协议告诉搜索引擎哪些页面可 ...

  9. Android中asset文件夹和raw文件夹区别(转载)

    原文地址:http://www.cnblogs.com/leizhenzi/archive/2011/10/18/2216428.html *res/raw和assets的相同点: 1.两者目录下的文 ...

  10. Python rsplit() 方法

    描述 Python rsplit() 方法通过指定分隔符对字符串进行分割并返回一个列表,默认分隔符为所有空字符,包括空格.换行(\n).制表符(\t)等.类似于 split() 方法,只不过是从字符串 ...