#include<stdio.h>
#include<string.h>
void itostr(char*,long);/*函数声明*/
void reverse(char*);
void itsostr(char*str,long n)
{
int sign;
char*strtmp=str;
if(n<0)/*当负数使保存符号,并把n取绝对值*/
{sign=-1;
n=-n;
}
else sign=1;
do{
*str++=n%2+'0';/*用循环把整数转换成倒排的2进制*/
}
while((n/=2)!=0);
if(sign<0)
*str++='-';
*str='\0';
reverse(strtmp);/*把倒排的2进制在倒回到正常*/
}
void reverse(char*str)/*字符串倒排函数*/
{
char*t;
int c;
t=str+strlen(str)-1;/*指针t指向串末尾*/
for(;str<t;str++,t--)/*倒排动作*/
{c=*str;
*str=*t;
*t=c;
}
}
main()
{
long n=10;
char str[40];
printf("请输入整数:");
scanf("%ld",&n);
itsostr(str,n);
printf("\n十进制%ld=2进制%s",n,str);
}
运行结果: