将下列数分别转换成其它三种进制数,要求写出计算过程

来源:百度知道 编辑:UC知道 时间:2024/06/29 01:02:26
计算题(将下列数分别转换成其它三种进制数,要求写出计算过程)
(1)(69)10 (2)(1001101.11)2
(3)(25)10 (4)(11001011.01)2

我写了一个不过功能有限不能转换成16进制,但可以吧16进制转换成其他三种进制,不能处理小数,处理负数,我会完善的。
#include "stdio.h"
#include "string.h"
/*turn_be()把你的字符串数字转换成10进制整数赋予num*/
turn_de(char str[],int dd)
{ int num=0;
int s,k=1,key;
char *p;
p=str;
if(*p=='-') p++;
while(*p) {if(*p>='0' && *p<='9') s=*p-'0';
else s=*p-'a'+10;
num=num*dd+s;
p++;
}
return num;
}
/*fun()吧处理好的num转换成其余进制*/
fun(num,dd)
{ int k,i;
char a[20];
k=num;
/*****输出2进制********/
if(dd!=2)
{ printf("\n2 system :");
for(i=0;num;i++) {a[i]=num%2;num/=2;}
for(;i;i--) {printf("%d",a[i-1]);}
}
num=k;
/*****输出8进制********/
if(dd!=8)
{printf("\n8 system :");
for(i=0;num;i++) {a[i]=num%8;num/=8;}
for(;i;i--) {pri