如题所述
#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;
}
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;
}
//判断最低位,并压入数组中逆序输出
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;
}