请问我的这个C语言程序哪儿错了啊,就是把一个十进制数转换成一个二进制数

来源:百度知道 编辑:UC知道 时间:2024/05/05 11:09:33
#include<stdio.h>
main()
{int a[30],i;
long int shu;
printf("\n");
scanf("%d",&shu);
for(i=0;shu!=0;i++)
{a[i]=(shu%2);
shu=shu/2;
}
for(i=0;i<30;i++)
printf("%d\r",a[i]);
}

#include<stdio.h>
main()
{int a[30],i,n;
long int shu;
printf("\n");
scanf("%ld",&shu);
for(i=0;shu>0;i++)
{
a[i]=shu%2;
shu=shu/2;
}
n=i-1;
for(i=n;i>=0;i--)//这里要倒叙输出 有几个出几个
printf("%d",a[i]);
}

用下面这个算法.

/*
DecaToElse
十进制到任意进制的转换
iSrc: 待转换的数据
iFlag: 需要转换的进制(比如:十六进制 - 16)
szResult: 返回的结果字符串
返回值:转换之后的结果 否则返回空
*/
char* DecaToElse(int iSrc, int iFlag, char* szResult)
{

int iDiv = iSrc, iMod, i = 0, iTemp;
char* szRet;
char ch;

if(iFlag < 2 || iFlag > 36)
return NULL;

//求数据的位数
if(iDiv == 0)
iTemp = 2;
else iTemp = (int)(log10((float)iSrc) / log10((float)iFlag) + 2);
szRet = (char*)malloc(sizeof(char) * (iTemp + 1));

//为 0 时的处理
if(iDiv == 0){
szRet[i++] = '0';
}