用c语言编写函数把任意十进制数转换成二进制数

这是我的做法,我是初学者,可是什么也没有输出,我也看不出有什么问题,请各位指教

#include<stdio.h>
main()
{
int x[16]={0},n,i,m;
printf("请输入一个整数:");
scanf("%d",&n); //判断n是否是整数
if(n>0)
{
for(i=0;n<16;i++) //转化为二进制
{
x[i]=n%2;
n=n/2;
}
for(i=15;i>=0;i--) //逆序输出
printf("%d",x[i]);
}
if(n<0) //
{
m=-(n-1);
for(i=0;n>=1;i++)
{
x[i]=n%2;
n=n/2;
}
for(i=0;i<16;i++) //按位取反
{
if(x[i]=0) x[i]=1;
if(x[i]=1) x[i]=0;
}
for(i=15;i>=0;i++)
printf("%d",x[i]);
}
if(n=0)
{
for(i=0;i<16;i++)
printf("%d",x[i]);
}
printf("\n");
}

第1个回答  2012-12-24
/*
输入整数(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 ;
}
第2个回答  2012-12-24
for(i=0; n<16; i++) //转化为二进制

还有这
for(i=0; n>=1; i++)

中间的n 都应该改成 i 吧?
第3个回答  2012-12-24
for(i=0;n<16;i++) //转化为二进制

为什么是n<16??本回答被提问者采纳

相关了解……

你可能感兴趣的内容

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