2015-09-18 59 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

相關問題