2015-09-18 31 views
0

所以我有一些问题与我的循环。我试图把一个十进制变成二进制表示,但循环只是迭代一次。有小费吗? (我是C btw新手)。提前致谢!关于这个循环的建议,打印十进制数字到二进制

#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; 
} 
+0

你的代码或问题的哪部分是“小数”? –

+0

小数点将是我从scanf获得的任何数字 –

+0

您是否尝试在实际调试器中调试代码? – YePhIcK

回答

4

问题是你没有循环。一个if检查一次条件并执行一些操作。如果您使用while,则会持续运行,直到条件为假。所以,你需要改变这一点:

if((a>0)) { 

对此

while(a > 0) { 

而且,在你scanf格式摆脱空间:

scanf("%i", &a); 

否则将无法完成,当你按Enter键。

+0

如果'a == 0',没有任何东西用'while(a> 0){'。'do {...}来打印,而(a)'修正了这个问题,负数是另一个问题。 – chux

相关问题