新手编程遇到问题百思不得其解求助~~~~~~~~~~
c语言吧
全部回复
仅看楼主
level 1
#include <stdio.h>
#include <stdlib.h>
int main()
{
int dN;
int i;
int rem[1000];
int dN1;
int a;
printf("Please enter a positive decimal number:");
scanf("%d",&dN);
dN1=dN;
for(i=0;dN>1;i++)
{
rem[i]=dN%2;
dN=dN/2;
}
rem[i+1]=dN;
printf("The binary number of %d is ",dN1);
for(a=i+1;a>=0;a--)
{
printf("%d",rem[a]);
}
return 0;
}
这是一个10进制数转2进制的程序,
经测试最后那个a=i+1时会出错,a会等于一个很奇怪的数,导致rem[a]项出错。
求解。。。

2012年04月25日 10点04分 1
level 5
第一个for循环判断条件应该是dN>0吧
2012年04月25日 10点04分 2
level 1
好像是这样,感谢2楼~~~~
但是a=i+1的问题究竟该怎么解决呢?
2012年04月25日 10点04分 3
level 5
第一个for循环结束的时候,i已经累加1,所以下面不用再加1了
2012年04月25日 10点04分 4
level 5
其实我也是新手*^_^*
2012年04月25日 10点04分 5
level 1
我刚刚试了一下,我把程序改成这样了
#include <stdio.h>
#include <stdlib.h>
int main()
{
int dN;
int i;
int rem[1000];
int dN1;
printf("Please enter a positive decimal number:");
scanf("%d",&dN);
dN1=dN;
for(i=0;dN>0;i++)
{
rem[i]=dN%2;
dN=dN/2;
}
printf("The binary number of %d is ",dN1);
for(;i>=0;i--)
{
printf("%d",rem[i]);
}
return 0;
}
可是最后输出的数值还是不对,怎么会这样~~~~哦哦哦哦哦!!![啊!]
2012年04月25日 10点04分 6
level 5
for(;i>=0;i--) { printf("%d",rem[i]); }
2012年04月25日 11点04分 7
level 5
改成i--;while(i>=0){printf("%d",rem[i]);i--}
2012年04月25日 11点04分 8
level 1
哦哦·~~我做出来了~~~谢了!!!!!<( ̄) ̄)>~~~
2012年04月25日 11点04分 9
level 5
朋友加个QQ吧,以后有问题一起讨论,我也是新手
2012年04月25日 11点04分 10
level 5
呃……忘记发QQ了:1835300686
2012年04月25日 11点04分 11
level 9
哎,模二取余,倒序输出。
仅此而已。
2012年04月25日 12点04分 12
1