C语言十进制转二进制

来源:百度知道 编辑:UC知道 时间:2024/05/18 02:17:43
为什么输出是反的呢?

#include<stdio.h>
void main()
{
int a=0,b=0;
printf("\n 请输入一个数: \n");
scanf("%d",&a);
do
{

b=a%2;
printf("%d",b);
a=a/2;
}
while(a>0);

}
比如我输入2
它输出为01,反了一下
如何在转过来?
用数组我不只到给它要多大的空间,我不可能分配100000个空间吧
高手请指导一下..........................

呵呵这样做的确输出的是反过来的数
方法一:
可以利用数组顺序存储转换过程中依次得到每个数字位,
转换结束后再按相反的次序输出数组内容即可得到正确的结果。

方法二:
直接搞掂,这才叫强!!!
且看我如何强法!!

#include <stdio.h>
void trans(int x)
{
int a[30];//我算过了,1亿好像才29位的二进制,一般不用算
//这么大的数了吧~~
int i=0,rem;
do{
rem=x%2;x=x/2;
a[i]=rem;
i++;
}while(x!=0);//这个算法看你的代码知道你懂!:)
while(i>0)
printf("%d",a[--i]);
printf("\n");//这就是我的精华了,倒输出正确顺序的数~
}
void main()
{
int d;
printf("请输入一个十进制的正整数:\n");
do scanf("%d",&d);while(d<0);
trans(d);
}

我觉得楼主的水平也不差,
应该看得懂吧
我只是加了几句而已
加分哦:)

#include<stdio.h>
void to_binary(unsigned long n);

int main(void)
{
unsigned long number;
printf("enter an integer :(q to quit)\n");
while(scanf("%ul",&number) == 1)
{