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

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

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

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

样例输入
  2
  39
  123ABC

样例输出
  71
  4435274

【提示】
  先将十六进制数转换成某进制数,再由某进制数转换成八进制。
这个代码是看的其他网友的,看起来比较复杂,后来我想了一下,可以先把这个十六进制转成十进制,再转换成八进制%O就很简单易懂,后面文章有我写的十六进制转成十进制的代码,可以试一下。

#include<stdio.h>
#include<string.h>int main()
{int n,i,j,k,a,cur,ok,m,l;char s[10][100001];char d16[16][5]={"0000","0001","0010","0011","0100","0101","0110","0111","1000","1001","1010","1011","1100","1101","1110","1111"};char out[140000]={};char z[13]={};scanf("%d",&n);                      for(j=0;j<n;j++)scanf("%s",s[j]);for(j=0;j<n;j++)  {k=0;ok=1;m=0;                            /*初始化标记数据*/ l=strlen(s[j]);                           /* 初始化标记数据*/ a=3-l%3;                                   /*初始化标记数据*/   //求出要将这个十六进制数补足为3的倍数需要补上多少个0if(a==3)   ok=0;                    /*十六进制数长度刚好为3的倍数时转二进制不需补0,ok标记其是否为3的倍数0是1不是*/ for(i=0;i<l;i++)                       /*逐位读取十六进制数进行转换*/ {if(65<=s[j][i])                          s[j][i]-=7; //这里不理解请查阅ASCII代码表if(ok)                                     /*十六进制数位数不足转二进制时补0占位*/ if(a==1){  //若需补一个十六进制的0,相当于补上四个二进制的0即0000,下面补两位也一样strcat(z,"0000");k=k+4;ok=0;}else if(a==2){strcat(z,"00000000");k=k+8;ok=0;}z[k++]=d16[s[j][i]-48][0];                  /*一位十六进制转四位二进制*/ z[k++]=d16[s[j][i]-48][1];z[k++]=d16[s[j][i]-48][2];z[k++]=d16[s[j][i]-48][3];if(k==12)                                    /*每转三位十六进制数将其转为四位八进制数*/ {for(cur=0;cur<12;m++)out[m]=((z[cur++]-48)*4+(z[cur++]-48)*2+(z[cur++]-48)*1)+48;z[0]='\0';k=0;                               /*z[0]='\0'初始化字符串结束符位置避免溢出*/ }}                                      for(;k<3;k++)                                  /*输出时忽略前导0*/ if(out[k]!=48)   break; //48是字符‘0’的ASCII值for(;k<m;k++)printf("%c",out[k]);putchar('\n');}return 0;} 

基础练习 十六进制转八进制 c语言相关推荐

  1. 蓝桥杯 基础练习(十二) 十六进制转八进制 C语言

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

  2. 蓝桥杯 试题 基础设计 十六进制转八进制

    蓝桥杯 基础试题 十六进制转八进制 题目描述: 给定n个十六进制正整数,输出它们对应的八进制数. 输入格式 输入的第一行为一个正整数n (1<=n<=10).接下来n行,每行一个由0到9, ...

  3. 【蓝桥杯】基础练习 十六进制转八进制(Java实现)

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

  4. java蓝桥杯 试题-基础练习-十六进制转八进制

    试题-基础练习-十六进制转八进制 题目 试题 基础练习 十六进制转八进制 资源限制 时间限制:1.0s 内存限制:512.0MB 问题描述 给定n个十六进制正整数,输出它们对应的八进制数. 输入格式 ...

  5. 试题 基础练习 十六进制转八进制

    试题 基础练习 十六进制转八进制 问题描述 给定n个十六进制正整数,输出它们对应的八进制数. 输入格式 输入的第一行为一个正整数n (1<=n<=10). 接下来n行,每行一个由09.大写 ...

  6. Python 蓝桥杯试题 基础练习 十六进制转八进制

    Python 蓝桥杯试题 基础练习 十六进制转八进制 问题描述 给定n个十六进制正整数,输出它们对应的八进制数. 输入格式 输入的第一行为一个正整数n (1<=n<=10). 接下来n行, ...

  7. 十六进制转八进制java_基础练习-十六进制转八进制 -JAVA蓝桥杯

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

  8. 十六进制转八进制C语言实现

    试题 基础练习 十六进制转八进制 问题描述 给定n个十六进制正整数,输出它们对应的八进制数. 输入格式 输入的第一行为一个正整数n (1<=n<=10). 接下来n行,每行一个由09.大写 ...

  9. 蓝桥杯 十六进制转为八进制 C语言版

    ** 蓝桥杯 十六进制转为八进制 ** 题目 给定n个十六进制正整数,输出它们对应的八进制数. 输入格式 输入的第一行为一个正整数n (1<=n<=10). 接下来n行,每行一个由09.大 ...

最新文章

  1. Python数据可视化实战应用万字长文从入门到高端(建议收藏)
  2. 一阶微分方程的物理意义_MIT—微分方程笔记24 一阶常微分方程组
  3. [转]Maven如何手动添加jar包到本地Maven仓库
  4. 数据挖掘笔试面试(10)
  5. java 1.7 新特性
  6. linux 服务端口查询,linux 怎么查看服务和端口
  7. C++设计模式-Facade模式
  8. Spring事务管理的demo
  9. MYSQL类型与JAVA类型对应表
  10. 引号 解析 逗号_笔试积累 | 军队文职公共科目真题解析18
  11. 类方法实现:用python实现一个简单的单词本,添加/查找/删除单词。
  12. 酷炫MQTT实现消息推送
  13. java 算法之快速排序
  14. 对话「平衡车之父」:把Solowheel带回中国
  15. 成都Uber优步司机奖励政策(2月25日)
  16. K--最邻近(K-NN)算法
  17. 思科 计算机网络 第5章测试考试 答案
  18. Android Tag-Cloud (云标签) 效果
  19. laydate日期时间插件实现不用点击确定
  20. 中国书法名词解释大全

热门文章

  1. 详解CSS三大特性之层叠性、继承性和重要性——Web前端系列学习笔记
  2. 使用组合索引你得注意了
  3. 用计算机完成下表的视距测量计算公式,测量学计算题.doc
  4. 笔记本电脑打开后不显示桌面_宝骏630打开空调开关后压缩机不工作 - 汽车空调...
  5. 华 为 路 由 器 命 令 大 全
  6. rtx3080 pytorch cuda_最不值得买的高端显卡!RTX3080从真香变成了鸡肋?|显卡|amd|RTX3080...
  7. linux内核支持utf8,Linux对非UTF-8中文编码的支持
  8. mongodb 日期分组聚合_mongoose聚合aggregate按日期分组计算
  9. php 特殊符号处理,处理特殊符号的方法-php技巧
  10. 月份对比_6月份钢坯市场或将高位回落