16进制转8进制代码(初学级别)
来源:互联网 发布:奥特曼战斗力官方数据 编辑:程序博客网 时间:2024/04/29 06:39
C语言为入门级别,有很多不足,希望各位大神指导
代码目标:
给定n个十六进制正整数,输出它们对应的八进制数。
输入格式
输入的第一行为一个正整数n (1<=n<=10)。
接下来n行,每行一个由0~9、大写字母A~F组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。
输出格式
输出n行,每行为输入对应的八进制正整数。
【注意】
输入的十六进制数不会有前导0,比如012A。
输出的八进制数也不能有前导0。
样例输入
2
39
123ABC
样例输出
71
4435274
输入格式
输入的第一行为一个正整数n (1<=n<=10)。
接下来n行,每行一个由0~9、大写字母A~F组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。
输出格式
输出n行,每行为输入对应的八进制正整数。
【注意】
输入的十六进制数不会有前导0,比如012A。
输出的八进制数也不能有前导0。
样例输入
2
39
123ABC
样例输出
71
4435274
代码如下
#include <stdio.h>#include <malloc.h>void Get16_2(char c,int r[]){switch(c){case '0':r[0]=0;r[1]=0;r[2]=0;r[3]=0;break;case '1':r[0]=0;r[1]=0;r[2]=0;r[3]=1;break;case '2':r[0]=0;r[1]=0;r[2]=1;r[3]=0;break;case '3':r[0]=0;r[1]=0;r[2]=1;r[3]=1;break;case '4':r[0]=0;r[1]=1;r[2]=0;r[3]=0;break;case '5':r[0]=0;r[1]=1;r[2]=0;r[3]=1;break;case '6':r[0]=0;r[1]=1;r[2]=1;r[3]=0;break;case '7':r[0]=0;r[1]=1;r[2]=1;r[3]=1;break;case '8':r[0]=1;r[1]=0;r[2]=0;r[3]=0;break;case '9':r[0]=1;r[1]=0;r[2]=0;r[3]=1;break;case 'A':r[0]=1;r[1]=0;r[2]=1;r[3]=0;break;case 'B':r[0]=1;r[1]=0;r[2]=1;r[3]=1;break;case 'C':r[0]=1;r[1]=1;r[2]=0;r[3]=0;break;case 'D':r[0]=1;r[1]=1;r[2]=0;r[3]=1;break;case 'E':r[0]=1;r[1]=1;r[2]=1;r[3]=0;break;case 'F':r[0]=1;r[1]=1;r[2]=1;r[3]=1;break;}}int Csize(char *c){ //输入的16进制字符串长度 int i=0;for(;c[i]!='\0';i++);return i;}void Put2_8(int *array,int s,int n,int l){int t;for(int i=s;i<n-2;){t = array[i]*4 + array[i+1]*2 + array[i+2];if(l == 0){if(t != 0)printf("%d",t);}else{printf("%d",t);l = 1;}i+=3;}printf("\n");}void Cheak2(int *array,int n){ //检查二进制数位数是否是3的整数倍 int l=0,y = n%3; //y 2进制数位数对三取余 l 八进制数首位是否为0 if(y == 1){if(array[0] == 1){printf("%d",1);l=1;}}if(y == 2){l = array[0]*2 + array[1];if(l != 0)printf("%d",l);}Put2_8(array,y,n,l); //调用转化输出函数}void fun(char *c16){int r16[4],array[21],tk;tk = Csize(c16);for(int i=0;i<tk;i++){Get16_2(c16[i],r16);for(int j=0;j<4;j++){array[i*4+j] = r16[j];}}Cheak2(array,tk*4);}int main() {int N;char c16[10][10];scanf("%d",&N);for(int i=0;i<N;i++)scanf("%s",c16[i]);for(int i=0;i<N;i++)fun(c16[i]);return 0;}
0 0
- 16进制转8进制代码(初学级别)
- github代码上传(初学)
- Qtwebkit初学例子(附代码)
- PHP入门级别代码
- 测试代码段的执行时间(精确到NSTimeInterval级别)
- SQL 初学入门代码
- java初学 简单代码
- 初学代码,XML。
- 代码跟踪--初学cocos2dx
- PHP初学着代码
- erlang 初学代码
- doT.js初学代码
- Python3 初学实践案例(4)可设定长度和密码复杂级别的生成密码脚本
- Python3 初学实践案例(5)可设定长度和密码复杂级别的生成密码脚本另一种思路
- 事务隔离级别示例代码
- 页面级别的代码重用
- 代码创建自定义权限级别
- 程序的机器级别代码
- JS中math()函数相关问题
- linux命令之find(2)
- java date最常用的时间格式化
- 排序—选择排序(js实现)
- 前缀、中缀、后缀表达式
- 16进制转8进制代码(初学级别)
- 心情需要洗涤
- Navicat For Mysql快捷键
- android AsyncTask介绍(2)
- Linux下Python 缩进 SyntaxError: 'break' outside loop
- NGUI缓动UITWeener源码分析
- java的递归任务和分治算法实现大数组数据求和
- include包含头文件的语句中,双引号和尖括号的区别
- 2016-1-7-html语法学习