基础练习 十六进制转八进制 c语言
基础练习 十六进制转八进制
问题描述
给定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语言相关推荐
- 蓝桥杯 基础练习(十二) 十六进制转八进制 C语言
十六进制转八进制 C语言 问题描述 给定n个十六进制正整数,输出它们对应的八进制数. 输入格式 输入的第一行为一个正整数n (1<=n<=10). 接下来n行,每行一个由09.大写字母AF ...
- 蓝桥杯 试题 基础设计 十六进制转八进制
蓝桥杯 基础试题 十六进制转八进制 题目描述: 给定n个十六进制正整数,输出它们对应的八进制数. 输入格式 输入的第一行为一个正整数n (1<=n<=10).接下来n行,每行一个由0到9, ...
- 【蓝桥杯】基础练习 十六进制转八进制(Java实现)
试题 基础练习 十六进制转八进制 资源限制 时间限制:1.0s 内存限制:512.0MB 问题描述 给定n个十六进制正整数,输出它们对应的八进制数. 输入格式 输入的第一行为一个正整数n (1< ...
- java蓝桥杯 试题-基础练习-十六进制转八进制
试题-基础练习-十六进制转八进制 题目 试题 基础练习 十六进制转八进制 资源限制 时间限制:1.0s 内存限制:512.0MB 问题描述 给定n个十六进制正整数,输出它们对应的八进制数. 输入格式 ...
- 试题 基础练习 十六进制转八进制
试题 基础练习 十六进制转八进制 问题描述 给定n个十六进制正整数,输出它们对应的八进制数. 输入格式 输入的第一行为一个正整数n (1<=n<=10). 接下来n行,每行一个由09.大写 ...
- Python 蓝桥杯试题 基础练习 十六进制转八进制
Python 蓝桥杯试题 基础练习 十六进制转八进制 问题描述 给定n个十六进制正整数,输出它们对应的八进制数. 输入格式 输入的第一行为一个正整数n (1<=n<=10). 接下来n行, ...
- 十六进制转八进制java_基础练习-十六进制转八进制 -JAVA蓝桥杯
基础练习 十六进制转八进制 时间限制:1.0s 内存限制:512.0MB 问题描述 给定n个十六进制正整数,输出它们对应的八进制数. 输入格式 输入的第一行为一个正整数n (1<=n< ...
- 十六进制转八进制C语言实现
试题 基础练习 十六进制转八进制 问题描述 给定n个十六进制正整数,输出它们对应的八进制数. 输入格式 输入的第一行为一个正整数n (1<=n<=10). 接下来n行,每行一个由09.大写 ...
- 蓝桥杯 十六进制转为八进制 C语言版
** 蓝桥杯 十六进制转为八进制 ** 题目 给定n个十六进制正整数,输出它们对应的八进制数. 输入格式 输入的第一行为一个正整数n (1<=n<=10). 接下来n行,每行一个由09.大 ...
最新文章
- Python数据可视化实战应用万字长文从入门到高端(建议收藏)
- 一阶微分方程的物理意义_MIT—微分方程笔记24 一阶常微分方程组
- [转]Maven如何手动添加jar包到本地Maven仓库
- 数据挖掘笔试面试(10)
- java 1.7 新特性
- linux 服务端口查询,linux 怎么查看服务和端口
- C++设计模式-Facade模式
- Spring事务管理的demo
- MYSQL类型与JAVA类型对应表
- 引号 解析 逗号_笔试积累 | 军队文职公共科目真题解析18
- 类方法实现:用python实现一个简单的单词本,添加/查找/删除单词。
- 酷炫MQTT实现消息推送
- java 算法之快速排序
- 对话「平衡车之父」:把Solowheel带回中国
- 成都Uber优步司机奖励政策(2月25日)
- K--最邻近(K-NN)算法
- 思科 计算机网络 第5章测试考试 答案
- Android Tag-Cloud (云标签) 效果
- laydate日期时间插件实现不用点击确定
- 中国书法名词解释大全
热门文章
- 详解CSS三大特性之层叠性、继承性和重要性——Web前端系列学习笔记
- 使用组合索引你得注意了
- 用计算机完成下表的视距测量计算公式,测量学计算题.doc
- 笔记本电脑打开后不显示桌面_宝骏630打开空调开关后压缩机不工作 - 汽车空调...
- 华 为 路 由 器 命 令 大 全
- rtx3080 pytorch cuda_最不值得买的高端显卡!RTX3080从真香变成了鸡肋?|显卡|amd|RTX3080...
- linux内核支持utf8,Linux对非UTF-8中文编码的支持
- mongodb 日期分组聚合_mongoose聚合aggregate按日期分组计算
- php 特殊符号处理,处理特殊符号的方法-php技巧
- 月份对比_6月份钢坯市场或将高位回落