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

如题所述

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

#include<stdio.h>

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

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

/*主函数*/

intmain(void)

{

intnum;

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

/*获取并检查用户输入*/

while(1)

{

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

{

fprintf(stderr,"输入错误!请重新输入:");

while(getchar()!='\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',stdout);

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

if(num==0)

{

fprintf(stdout,"0\n");

}

else

{

deciToBin(num);    //调用第归函数

fputc('\n',stdout);

}

#endif  

return0;

}

/*

*@函数名:deciToBin

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

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

*/

voiddeciToBin(intnum)

{

/*第归结束条件*/

if(num==0)

{

return;

}

/*第归调用*/

deciToBin(num/2);

/*逆序打印*/

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

}

扩展资料:

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

#include<stdio.h>

#include<string.h>

#include<stdlib.h>

intTenNum(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;

}

温馨提示:答案为网友推荐,仅供参考
相似回答
大家正在搜