c语言转二进制库函数 c语言 转换二进制

请用一个很简单的C语言程序:十进制转换为二进制。

#include "stdio.h"

创新互联,为您提供重庆网站建设公司网站制作、网站营销推广、网站开发设计,对服务成都阳台护栏等多个行业拥有丰富的网站建设及推广经验。创新互联网站建设公司成立于2013年,提供专业网站制作报价服务,我们深知市场的竞争激烈,认真对待每位客户,为客户提供赏心悦目的作品。 与客户共同发展进步,是我们永远的责任!

int main()

{

int n;

int i=0,j;

char str[100]={0};

char output[100]={0};

printf("请输入一个整数:");

scanf("%d",n);

while(n)

{

     str[i]=n%2+'0';

     n=n/2;

     i++;

}

for(j=0;ji;j++)

   output[j]=str[i-1-j];

printf("该整数的二进制表示为:%s\n",output);

}

C语言中怎样调用函数将十进制转换成二进制?

1、打开visualC++6.0-文件-新建-文件-C++SourceFile。

2、输入预处理命令和主函数:

#includestdio.h           /*输入输出头文件*/

voidmain()/*空类型:主函数*/

3、定义变量和数组的数据类型并输入一个十进制:

intb[16],x,k,r,i;/*定义变量和数组的数据类型为整型*/

printf("输入一个十进制:");/*输出文字提示*/

scanf("%d",x);         /*输入一个十进制数字*/

k=-1;/*将-1赋给k*/

4、用除R取余倒计法将十进制的数转化成二进制的数:

do/*用循环将十进制的数转化成二进制的数*/

{

r=x%2;/*用除R取余倒计法计算二进制*/

b[++k]=r;/*将值赋给数组*/

x/=2;/*将原数除2*/

}while(x=1);

5、输出结果:

for(i=k;i=0;i--)        /*将上面倒计的数正回来*/

printf("%d",b[i]);/*输出结果*/

printf("\n");

6、完整的源代码:

#includestdio.h           /*输入输出头文件*/

voidmain()/*空类型:主函数*/

{

intb[16],x,k,r,i;/*定义变量和数组的数据类型为整型*/

printf("输入一个十进制:");/*输出文字提示*/

scanf("%d",x);         /*输入一个十进制数字*/

k=-1;/*将-1赋给k*/

do/*用循环将十进制的数转化成二进制的数*/

{

r=x%2;/*用除R取余倒计法计算二进制*/

b[++k]=r;/*将值赋给数组*/

x/=2;/*将原数除2*/

}while(x=1);

for(i=k;i=0;i--)        /*将上面倒计的数正回来*/

printf("%d",b[i]);/*输出结果*/

printf("\n");

}

c语言: 编写递归函数把输入的一个负整数转换成二进制输出

根据评论要求,改进代码:

1、函数getBCode是题目要的递归函数,实现转二进制(最高位是符号位)。

思路是十进制数绝对值除以2求余,得到反向二进制原码,反向创建链表保存结果,最终得到的单向链表就是完整二进制数原码,之后根据正负性,负数取反+1。链表头添加符号位。

2、函数freeBny为释放链表,如要重复调用函数getBCode,每次调用需调用一次freeBny。

3、函数showBny是打印输出,为对齐显示,按4的倍数位打印,高位补齐的位数值均与符号位一致。

#include stdio.h

#include malloc.h

#include math.h

typedef struct binary//成员用char类型保存数值,不是'1'或'0'的ASCII码

{

char b;//一位二进制数0或1

struct binary *next;

}BNY;

BNY *getBCode(int n);//获得二进制数(最高位是符号位)

void showBny(BNY *bnyHead);//对齐打印二进制数(保证是4的倍数)

void freeBny(BNY *bnyHead);//释放二进制数链表空间

int main()

{

int n;

BNY bny,*bnyHead=bny;

while(1)

{

  printf("请输入一个整数:"),scanf("%d",n);

  bnyHead-next=getBCode(n);

  printf("转为二进制数:"),showBny(bnyHead);

  freeBny(bnyHead);

  printf("\n");

}

return 0;

}

void freeBny(BNY *bnyHead)

{

BNY *prev=NULL,*bny=NULL;

bny=bnyHead-next;

while(bny)

{

  if(prev) prev-next=NULL,free(prev),prev=NULL;

  prev=bny;

  bny=bny-next;

}

bnyHead-next=NULL;

}

void showBny(BNY *bnyHead)

{

int i,f=-1,len=0,n=0;

BNY *bnySave=bnyHead;

while(bnyHead-next)

{

  if(f==-1) f=bnyHead-next-b;

  len++;

  bnyHead=bnyHead-next;

}

if(len%4)

  n=4-len%4;

for(i=0;in;i++)printf("%d",f);

bnyHead=bnySave;

while(bnyHead-next)

{

  printf("%d",bnyHead-next-b);

  n++;

  if(n==4)printf(" "),n=0;

  bnyHead=bnyHead-next;

}

}

BNY *getBCode(int n)

{

int s,y;

static BNY*bnyPrev=NULL;

static int cy=0,f=-1;//加1进位用

if(f==-1 n=0)f=1;

if(f==-1 n0)f=0,cy=1;

n=abs(n);

BNY *bnyNew=NULL;

s=n/2,y=n%2;

bnyNew=(BNY *)malloc(sizeof(BNY));

if(!bnyNew) return NULL;

bnyNew-b=y;

// 如是负数,直接取反+1

if(!f) bnyNew-b=!(bnyNew-b);//从最低位开始,负数取反

if(cy)bnyNew-b=bnyNew-b+cy,cy=0;//负数+1

if(bnyNew-b1)bnyNew-b=0,cy=1;

bnyNew-next=NULL;

if(bnyPrev) bnyNew-next=bnyPrev;

bnyPrev=bnyNew;

n=s;

if(n==0)

{

  bnyNew=(BNY *)malloc(sizeof(BNY));//添加符号位

  if(!bnyNew) return NULL;

  if(!f)

      bnyNew-b=1;

  else

      bnyNew-b=0;

  bnyNew-next=bnyPrev;

  bnyPrev=NULL;

  cy=0,f=-1;

  return bnyNew;

}

return getBCode(n);

}

C语言十进制转二进制

呵呵这样做的确输出的是反过来的数

方法一:

可以利用数组顺序存储转换过程中依次得到每个数字位,

转换结束后再按相反的次序输出数组内容即可得到正确的结果。

方法二:

直接搞掂,这才叫强!!!

且看我如何强法!!

#include stdio.h

void trans(int x)

{

int a[30];//我算过了,1亿好像才29位的二进制,一般不用算

//这么大的数了吧~~

int i=0,rem;

do{

rem=x%2;x=x/2;

a[i]=rem;

i++;

}while(x!=0);//这个算法看你的代码知道你懂!:)

while(i0)

printf("%d",a[--i]);

printf("\n");//这就是我的精华了,倒输出正确顺序的数~

}

void main()

{

int d;

printf("请输入一个十进制的正整数:\n");

do scanf("%d",d);while(d0);

trans(d);

}

我觉得楼主的水平也不差,

应该看得懂吧

我只是加了几句而已

加分哦:)


当前标题:c语言转二进制库函数 c语言 转换二进制
文章网址:http://ybzwz.com/article/doehhoi.html