c语言编写一个程序,将十进制整数n 转换成二进制数

#include<stdio.h>
int main()
{
int n,a,b;
printf("请输入一个十进制的整数\n");
scanf("%d",&n);
a=a%2;
b=n/2;
while(a>=1);
{
a=b%2;
b=b/2;
printf("%d",a);
}
return 0;
}
不知道该怎么修改以及把输出的数字倒过来,求助

#include <stdio.h>

int transfer(int x)

{

int p=1,y=0,yushu;

while(1)

{

yushu=x%2;

x/=2;

y+=yushu*p;

p*=10;

if(x<2)

{

y+=x*p;

break;

}

}

return y;

}

void main()

{

//进制转换函数的声明

int transfer(int x);

int x;

printf("请输入一个十进制数:");

scanf("%d",&x);

printf("转换成二进制数是:%d\n",transfer(x));

}

扩展资料:

c语言书写规则:

1.一个说明或一个语句占一行。

2.用{} 括起来的部分,通常表示了程序的某一层次结构。{}一般与该结构语句的第一个字母对齐,并单独占一行。

3.低一层次的语句或说明可比高一层次的语句或说明缩进若干格后书写。以便看起来更加清晰,增加程序的可读性。在编程时应力求遵循这些规则,以养成良好的编程风格。

参考资料:

百度百科-c语言

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-11-05

将输出的内容先放置到一个数组中,最后数组反序输出

追问

问题是我这个程序本身就存在问题

第2个回答  推荐于2017-09-09
#include<stdio.h>
#include<math.h>
int main()
{
int n;
printf("请输入一个十进制的整数\n");
scanf("%d",&n);
int time = 0;
int a = 0;
while(n!=0){
if(n%2==0)
a = a;
if(n%2==1)
a = a + pow(10,time);
time++;
n=n/2;
}
printf("%d",a);
return 0;
}追问

还有其他方法吗?我们并没有学过pow啊,看得不咋地懂

追答

pow是乘方,第一个参数是底数,第二个参数是指数。math包里面的 这就是一个数学问题,比如我想把123反转,我就把个位的数字乘以10的2次方+十位的数字乘以10的1次方+百位的数字乘以10的0次方,不就得到了321。如果你学过了数组你可以把结果保存在数组然后逆序,这样也可以。

本回答被提问者采纳
第3个回答  2018-05-23
#include<stdio.h>//十进制数转化为二进制数
void to_binary (int n); //binary n.二进制的;双的
int main ( void )
{
int number;
printf("输入一个整数(输入q退出): \n");
while (scanf("%d",number)==1)
{
printf("二进制形式 :\n");
to_binary(number);
putchar('\n');//打印换行符
printf("输入一个整数(输入q退出): \n");
}
printf("完成");
return 0;
}
void to_binary(int n)
{
int r;
r=n%2;
if(n>=2)
to_binary(n/2);
putchar('0'+r); //'0'是字符,此语句可写成putchar( r ? '1' : '0');
return 0;
}
相似回答