您的位置首页生活小窍门

求十进制转换二进制C语言代码

求表章你队外度失度一石十进制转换二进制C语言代码代码如下:

#incl360问答ude<stdio.h>

#define NR(sizeof(int)*8) //二进制位的个数

voiddeciToBin(intnum); //十进制转换为二进制函数声明

/*主函数*/

intmain(void)

{

intnum;

fprintf(级stdout,"请输入一个正整数:");

/*获取并检讲支更查用户输入*/

while(1)

{

if(fscanf(stdin,"%d",&num)!=1)

{

fprintf(stder温去沉r,"输入错误!请重新输入:");

while(getc息响章测保办危抗职容阶har()!='\n');//去掉多余的非法字符 

continue;

}

elseif(num<0)       //输入的数不能为负数

{

fprintf(stderr,"请输入错误!请输入正整数:");

continue;

蛋}

else

break;

}

fprintf(stdout,"对应二进制为:");

#if1/*方法一:不使用递归*/

charbitArr[NR];

inti=-1;

/*算文系汽万配针攻跟京福德法:栈的数学模型*/

do{

i+=1;

bitArr[i]=num%2;

num/=2;

}while(num!=0);

/*逆序督计光妈高够核操哪甚既打印*/

for(i;i>=0;i--)

{

fprintf(stdout,"%d",bitArr[i]);

}

fputc('\n',std除找乡曲战字喜养微out);

#else室己编/*方法二:使用递归*/

if(他翻校河神足击很其num==0)

{

fprintf假府命(stdout,"0\n");

}

else

{

deciToBin(n律鲜按文早调审附杂um);    //调用第归函数

fputc('\n',stdout);

}

#endif  

return0;

}

/*

*@函数名:deciToBin

*@函数功能:实现十进制转换为二进制

*@参数:需要转换介的十进制整数

*/

voiddeciToBin(intnum)

{

/*第归结束条件*/

if(num==0)

{

return;

}

/*第归调用*白喜宁维困家供/

deciToBin(num/2);

/*逆序打印*/

fprintf(stdout,"%d",num%2);

}

求十进制转换二进制C语言代码

扩展资料:

使用C语言编程实现任意进制数(2-16进制)转换为其他任意进制数(2-16进制)方法:

#include<stdio.h>

#include<string.h>

#include<stdlib.h>

i连尼密想吧ntTenNum(chara[重攻首市结越若语甲例],intB);

voidNumchange(intm,intB);

intTenNum(chara[],intB)

{

intlen,i,num;

intsum=0;   

len=strlen(a);

for(i=0;i<len;i++)

{

if(a[i]>='0'&&a[i]<='9')

num=a[i]-'0';

elseif(a[i]>='A'&&a[i]<='F')

num=a[i]-'A'+10;

sum=sum*B+num;

}

returnsum;

}

voidNumchange(intm,intB)

{

intn;

if(m)

{

Numchange(m/B,B);

n=m%B;

if(n<10)

printf("%d",n);

else

printf("%c",n+55);

}

}

intmain()

{

intB,b;

chara[20];    

printf("请输入待转换数的进制(2-16):");

do{

scanf_s("%d",&B);     

}while(B<2&&B>16);

printf("请输入待转换数:");

getchar();     

gets_s(a);

intm=TenNum(a,B);

printf("请输入需要转成几进制数(2-16):");

do{

scanf_s("%d",&b);

}while(B<2&&B>16);

printf("%d进制数%s转换为%d进制数的结果为:",B,a,b);

Numchange(m,b);

printf("\n");

system("pause");

return0;

}