c语言十进制转二进制算法问题

#include <stdio.h>
void main()
{
int b,i,c=0,a[30];
scanf("%d",&b);
while(b!=0)
{
i=b%2;
a[c]=i;
c++;
b=b/2;
}
for(;c>=0;c--)
{
printf("%d",a[c]);
}
printf("\n");
}
为什么我输入10但他输出-8589934601010
后面四个数是10的二进制,但前面的-858993460是怎么来的
是十进制转二进制打错了

#include <stdio.h>
void main()
{
int b,i,c=0,a[30];
scanf("%d",&b);
while(b!=0)
{
i=b%2;
a[c]=i;
c++;
b=b/2;
}

for(;c>=1;c--)
{
printf("%d",a[c-1]);
}
printf("\n");
}
这回对了 !你原来的错误在 第一个for循环 c的值是数组的长度多一 因为判断到最后一次时 c又执行一次加一 第二个for循环里c的值又多减了一次 楼主请注意for循环的条件 一定要想清楚 你原来的结果 前面的数就是那个a[C+1]里的随机数
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-06-17
#include <stdio.h>
void main()
{
int b,i,c=0,a[30];
scanf("%d",&b);
while(b!=0)
{
i=b%2;
a[c]=i;
c++;
b=b/2;
}
c--;//因为c代表存入数据的长度而下表范围是0~c-1
for(;c>=0;c--)
{
printf("%d",a[c]);
}
printf("\n");
}
第2个回答  2012-06-17
输出有问题,那个c现在的值已经越界了,应该从c-1开始输出的
第3个回答  2012-06-16
#include <stdio.h>
void main()
{
int b,i,c=0,a[30];
scanf("%d",&b);
while(b!=0)
{
i=b%2;
a[c]=i;
c++;
b=b/2;
}
int j;
for(j=c-1;j>=0;j--)
{
printf("%d",a[j]);
}
printf("\n");
}

相关了解……

你可能感兴趣的内容

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