c语言10进制转8进制以及16进制的源程序

来源:百度知道 编辑:UC知道 时间:2024/06/05 20:55:02

tc中怎么做到输入个10进制的数输出8进制以及16进制(10进制的数不超过5位数).
自己做的有时候只满足2位数以下的.
有高手指点下,最好有源程序.
版本是Turbo C&C++ 3 汉化版
我用拼音bajinzhi代替了八进制
shiliujinzhi代替了十六进制
然后出现了4个错误两个警告
printf("HEX:%s\n",h); 第一处错误 statement missing
return 0;
}

long dtoe(int a) // 八进制处2个警告 parameter'argc' is never used 以及 parameter 'argv' is never used
void dtoh(int a,char h[]) //十六进制
{
int i=log(a)/log(16);又一个错误type mismatch in redeclarmation of dtoh
a/=16;
} 最后的错误statement missing

#include <stdio.h>
#include <math.h>
#include <stdlib.h>
long dtoe(int a);
void dtoh(int a,char h[]);

int main(void)
{ long a;
char h[80];
scanf("%d",&a);

dtoh(a,h);
printf("HEX:%s\n",h);
a=dtoe(a);
printf("OCT:%d\n",a);
system("pause");
return 0;
}

long dtoe(int a) // 八进制
{
if (a<8) {
return a;
}
else
return (dtoe(a/8)*10+a%8);
}

void dtoh(int a,char h[]) //十六进制
{
int i;
i=(int)(log(a)/log(16));
h[i+1]=0;
while (a>15) {
if (a%16<10) h[i--]=48+(a%16);
else h[i--]=55+(a%16);
a/=16;
}
if (a>9) h[i]=55+a%16;
else h[i]=48+a%16;

}

***************************************

有什么问题?

是否可以一次把问题描述清楚??

已修正,可以在低版本的TC(如