C语言中如何用循环实现十进制数转换成二进制数

如题所述

#include<stdio.h>

main()
{
char *tentotwo(int n);

int num;

printf("please input a integer:");
scanf("%d",&num);
printf("该数转换为二进制为:%s\n\n", tentotwo(num));

}

char *tentotwo(int n)
{
int i,j=0;
int *p, *q, *f;
char *s;
p = (int *)malloc(32*sizeof(int));
s = (char *)malloc(32);
q = p;
f = (int *)malloc(32*sizeof(int));
while(n)
{
*q = n%2;
n /= 2;
q++;j++;
}
for(i=0;i<j;i++)
*(f+i)=*(p+j-1-i);
for(i=0;i<j;i++)
{
switch(*(f+i))
{
case 0 : *(s+i) = '0'; break;
case 1 : *(s+i) = '1'; break;
default : break;
}
}
*(s+j) = '\0';
return s;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2007-06-08
#include <stdio.h>

//判断最低位,并压入数组中逆序输出
void convert(int s)
{
int a[32], i = 0;
int c;
while(s)
{
c = s&1;
a[i++] = c;
s >>= 1;
}
for(int j = i-1; j >= 0; j--)
printf("%d",a[j]);
printf("\n");
}
int main()
{
int st;
scanf("%d",&st);
convert(st);
return 0;
}

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网