十六进制转八进制
来源:互联网 发布:2016淘宝小号直销商 编辑:程序博客网 时间:2024/05/21 10:27
十六进制转八进制
时间限制:1.0s 内存限制:512.0MB
问题描述:给定n个十六进制正整数,输出它们对应的八进制数。
输入格式:输入的第一行为一个正整数n (1<=n<=10)。接下来n行,每行一个由0~9、大写字母A~F组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。
输出格式:输出n行,每行为输入对应的八进制正整数。
注意:输入的十六进制数不会有前导0,比如012A。输出的八进制数也不能有前导0。
样例输入
2
39
123ABC
样例输出
71
4435274
提示:先将十六进制数转换成某进制数,再由某进制数转换成八进制。
代码如下:
/**十六进制转八进制进制之间的转换**/#include <stdio.h>#include <stdlib.h>#include <string.h>#define INF 100000000void sixt_change_eight();char *getinfo(int n);char *h=NULL ,*b=NULL,*e=NULL;int main() { int n;scanf("%d",&n);while(n--){ char num[100002]; scanf("%s",num); int length=strlen(num); h=getinfo(length); b=getinfo(4*length); e=getinfo((4/3+1)*length); h=num;//直接指向数组地址,运行时耗内存较少 //strcpy(h,num);//复制到数组时,内存稍微多一点 sixt_change_eight(); free(h); free(b); free(e);}return 0;}void sixt_change_eight(){ int i,len=0; //十六进制转成二进制 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; int j; for (j=0;j<4;j++) { b[len++]=v%2+'0';v/=2; } } b[len]='\0';//在字符串后面加一个‘\0’,b[len]就是一个存贮二进制数组 //printf("len=%d\n",len); int x=0,cnt=1,l=0; //把二进制转换成八进制 for(i=0;i<len;i++) { if(cnt==4||i==len-1) { x=cnt*(b[i]-'0')+x; cnt=1; e[l++]=x+'0'; x=0; } else { x=cnt*(b[i]-'0')+x; cnt*=2; } } //printf("l=%d\n",l); i=l-1; while(i>=0&&e[i]=='0') i--; if(i<0) printf("0"); for (;i>=0;i--) { printf("%c",e[i]); } printf("\n");}char *getinfo(int n){char *p=NULL;p=(char*)malloc(sizeof(char)*(n+1));if(NULL==p){exit(0);}return p;}
(全文完)
0 0
- 二进制、八进制、十六进制[转]
- 蓝桥杯 十六进制转八进制
- 蓝桥杯--十六进制转八进制。。。
- 十六进制转八进制
- 十六进制转八进制
- 十六进制转八进制
- 十六进制转八进制
- 十六进制转八进制
- 十六进制转八进制
- 十六进制转八进制
- 十六进制转八进制
- 练习 十六进制转八进制
- 蓝桥杯 十六进制转八进制
- HPUOJ1292 十六进制转八进制
- 十六进制转八进制
- 十六进制转八进制
- 蓝桥杯:十六进制转八进制
- 十六进制转八进制
- Tencent2016实习招聘技术面问题总结
- Ubuntu下为Firefox安装Adobe Flash Player
- 浅谈多线程编程以及锁的效率测试
- android更新UI的时候通知adapter和赋值listview的问题
- php多返回\ufeff
- 十六进制转八进制
- lua table
- HELLO<IMG SRC=1 ONERROR=ALERT(1)>
- face alignment by 3000FPS 代码解析之一
- Github上寻找敏感信息技巧分享
- poj 1904 tarjan强连通分量(给国王的2000个儿子找老婆 )
- 8 Essential Vim Editor Navigation Fundamentals
- 多线程_线程互斥
- 图示RFID信号传递的图形过程