C 关于将十进制数打印成二进制的循环的建议
所以我的循环有一些问题。我试图将十进制转换为二进制表示,但循环只迭代一次。有什么建议吗?(顺便说一句,我是新来的)。提前谢谢C 关于将十进制数打印成二进制的循环的建议,c,loops,binary,C,Loops,Binary,所以我的循环有一些问题。我试图将十进制转换为二进制表示,但循环只迭代一次。有什么建议吗?(顺便说一句,我是新来的)。提前谢谢 #include <stdio.h> int main(void) { int a,x; scanf("%i ", &a); if((a>0)) { x=a/2; x=x*2; if ((x!=a))
#include <stdio.h>
int main(void)
{
int a,x;
scanf("%i ", &a);
if((a>0))
{
x=a/2;
x=x*2;
if ((x!=a))
{
printf("1");
a=(a-.5)/2;
}
else
{
printf("0");
a=a/2;
}
}
return 0;
}
#包括
内部主(空)
{
int a,x;
scanf(“%i”和“&a”);
如果((a>0))
{
x=a/2;
x=x*2;
如果((x!=a))
{
printf(“1”);
a=(a-.5)/2;
}
其他的
{
printf(“0”);
a=a/2;
}
}
返回0;
}
问题在于没有循环。if
检查一次条件并执行一些操作。如果在期间使用,则会持续运行,直到条件为false。因此,您需要改变这一点:
if((a>0)) {
对此
while(a > 0) {
另外,清除scanf
格式中的空格:
scanf("%i", &a);
否则,当您按Enter键时,它将无法完成。问题在于您没有循环。if
检查一次条件并执行一些操作。如果在
期间使用,则会持续运行,直到条件为false。因此,您需要改变这一点:
if((a>0)) {
对此
while(a > 0) {
另外,清除scanf
格式中的空格:
scanf("%i", &a);
否则,当您按Enter键时,它将无法完成。您的代码或问题的哪部分是“十进制”?十进制将是我从scanfDid获得的任何数字。您尝试在实际的调试器中调试您的代码?如果在二进制数字计算机上运行,您将不会得到“十进制”,而是。。。binary.@CarlosM.Navarroscanf(“i”,…
不要求输入为十进制。您得到的数字只是一个数字。您的代码或问题的哪一部分是“十进制”?小数点将是我从scanfDid获得的任何数字。您尝试在实际调试器中调试代码吗?如果在二进制数字计算机上运行,您将不会得到“小数点”,而是…二进制。@CarlosM.Navarroscanf(“i”,…
不要求输入为十进制。您得到的数字只是一个数字。如果a==0
,则(a>0){
do{…}时不打印任何内容,而(a)
修复了这一问题。负数是另一个问题。如果a==0
,则而(a>0){
do{…}时不打印任何内容while(a)
解决了这个问题。负数是另一个问题。