求表章你队外度失度一石十进制转换二进制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语言编程实现任意进制数(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;
}