重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
求十进制转换二进制C语言代码代码如下:
创新互联长期为上千多家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为清河门企业提供专业的成都做网站、成都网站设计,清河门网站改版等技术服务。拥有十载丰富建站经验和众多成功案例,为您定制开发。
#includestdio.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(num0) //输入的数不能为负数
{
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进制)方法:
#includestdio.h
#includestring.h
#includestdlib.h
intTenNum(chara[],intB);
voidNumchange(intm,intB);
intTenNum(chara[],intB)
{
intlen,i,num;
intsum=0;
len=strlen(a);
for(i=0;ilen;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(n10)
printf("%d",n);
else
printf("%c",n+55);
}
}
intmain()
{
intB,b;
chara[20];
printf("请输入待转换数的进制(2-16):");
do{
scanf_s("%d",B);
}while(B2B16);
printf("请输入待转换数:");
getchar();
gets_s(a);
intm=TenNum(a,B);
printf("请输入需要转成几进制数(2-16):");
do{
scanf_s("%d",b);
}while(B2B16);
printf("%d进制数%s转换为%d进制数的结果为:",B,a,b);
Numchange(m,b);
printf("\n");
system("pause");
return0;
}
/*
输入整数(0结束) : 10
10 = (1010)2
输入整数(0结束) : 127
127 = (1111111)2
输入整数(0结束) : 255
255 = (11111111)2
输入整数(0结束) :
*/
#include stdio.h
#include stdlib.h
char *Converse(char s[],int n) {
int i,ch,m = 0;
while(n) {
s[m] = n%2 + '0';
n /= 2;
++m;
}
s[m] = '\0';
for(i = 0; i m/2; ++i) {
ch = s[i];
s[i] = s[m - 1 - i];
s[m - 1 - i] = ch;
}
return s;
}
int main() {
int num;
char s[20];
while(1) {
printf("输入整数(0结束) : ");
scanf("%d",num);
if(num == 0) break;
if(num 0) num = -num;
printf("%d = (%s)2\n",num,Converse(s,num));
}
system("PAUSE");
return 0 ;
}
c语言中没有二进制的格式输出符号.
你可以用itoa函数很方便的将一个10进制int转变成二进制字符串.
如:
int
i;
char
s[128];
scanf("%d",i);
itoa(i,
s,
2);
/*3个参数,第一个是待转换的数,第二个是存放转换后的字符串,第三个即需要转换的进制*/
printf("该数转换为二进制是:
[%s]\n",s);
补充一点,itoa函数的头文件是stdlib.h
这个主要考察递归的思想,只要你把递归的思想理解清楚了,就OK了。
前言不如一图
参考连接:
#includestdio.h
#includemath.h
void main()
{int ten,er=0,fig;int i;
printf("输入十进制数:");
scanf("%d",ten);
if(ten!=1)
{for(i=1;ten1;i++)
{
fig=ten%2;
ten=ten/2;
er+=fig*pow(10,(i-1));
} er+=1*pow(10,(i-1));
printf("转化为二进制数为:%d\n",er);
}
}