C语言十进制转二进制

为什么输出是反的呢?#include<stdio.h>voidmain(){inta=0,b=0;printf("\n请输入一个数:\n");scanf("%d",&a)... 为什么输出是反的呢?

#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个空间吧
高手请指导一下..........................
展开
 我来答
百度网友801b91b
推荐于2017-09-28 · TA获得超过8071个赞
知道大有可为答主
回答量:1152
采纳率:100%
帮助的人:1688万
展开全部
呵呵这样做的确输出的是反过来的数
方法一:
可以利用数组顺序存储转换过程中依次得到每个数字位,
转换结束后再按相反的次序输出数组内容即可得到正确的结果。

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

#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);
}

我觉得楼主的水平也不差,
应该看得懂吧
我只是加了几句而已
加分哦:)
办事通赵老师
高粉答主

2019-12-24 · 每个回答都超有意思的
知道小有建树答主
回答量:1001
采纳率:100%
帮助的人:25.3万
展开全部

十进制转二进制可以使用库函数itoa。

itoa函数原型:char*itoa(int value,char*string,int radix);

功能:将任意类型的数字转换为字符串。在<stdlib.h>中与之有相反功能的函数是atoi。

nt value 被转换的整数,char *string 转换后储存的字符数组,int radix 转换进制数,如2,8,10,16 进制等。


扩展资料:

方法

#include<stdio.h>

int main(void)

{ int i=0,n,a[32];

printf("请输入一个十进制整数.\n");

scanf("%d",&n);

while (n>0)

 {a[i]=n%2;

 i=i+1;

n=n/2;  }

printf("十进制整数转换为二进制数是:\n");

for(i--;i>=0;i--)

printf("%d",a[i]);

printf("\n");

return 0;}

十进制整数转换为二进制整数的方法:

十进制整数转换为二进制整数采用"除2取余,逆序排列"法。

具体做法是:用2去除十进制整数,可以得到一个商和余数;再用2去除商,又会得到一个商和余数,如此进行,直到商为零时为止,然后把先得到的余数作为二进制数的低位有效位,后得到的余数作为二进制数的高位有效位,依次排列起来。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ma馒头
2008-03-12 · 超过29用户采纳过TA的回答
知道答主
回答量:180
采纳率:0%
帮助的人:75.5万
展开全部
把十进制变成二进制是反复取余除2的,这种方法没错,但是应该逆序读出0或1的序列,才是正确的。
语法正确,逻辑错误。不信在纸上算一下就能看出来了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
虑而后能得
2008-03-12 · TA获得超过144个赞
知道小有建树答主
回答量:235
采纳率:0%
帮助的人:193万
展开全部
#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)
{
printf("binary equivalent :");
to_binary(number);
putchar('\n');
printf("enter an integer :(q to quit)\n");

}
printf("Done \n");
return 0;
}

void to_binary(unsigned long n)
{
int r;
r = n % 2;
if(n >= 2)
to_binary(n / 2);
putchar('0' + r);

return;
}
此为标准程序
#include<stdio.h>
#include<string.h>
int main(void)
{
int i = 0,m;
unsigned long n;
char a[64];
printf("please enter an integer(q to quit):\n");
while((scanf("%ul",&n)) == 1)
{
while(n >= 2)
{
a[i++] = (n % 2) + '0';
n /= 2;
}
a[i++] = '1';
a[i++] = '\0';
m = strlen(a);
for(i=m-1; i>=0; i--)
printf("%c",a[i]);
printf("\n");
printf("please enter an integer(q to quit):\n");
}
printf("Bye!\n");
return 0;
}
此为我自己做的,可以节省内存。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
鲁礼常胭
2019-12-30 · TA获得超过3.6万个赞
知道大有可为答主
回答量:1.2万
采纳率:26%
帮助的人:1013万
展开全部
使用库函数itoa。
itoa函数原型:char
*itoa(int
value,char*string,int
radix);
功能:将任意类型的数字转换为字符串。
其中int
value
被转换的整数,char
*string
转换后储存的字符数组,int
radix
转换进制数,如2,8,10,16
进制等。
参考代码:
#include <stdio.h>
#include<stdlib.h>
int main()
{
int n;
char a[100];
scanf("%d",&n);
itoa(n,a,2);//把十进制n转成2进制
printf("%s\n",a);
return 0;
}
/*
运行结果:把十进制的15转成2进制
15
1111
*/
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(8)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式