2015-09-18 15 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); 

В противном случае она не будет завершена, когда вы нажмите Ввод.

+0

Если 'a == 0', ничего не печатается с' while (a> 0) {'.' Do {...}, тогда как (a) 'исправляет это. Отрицательные числа - это еще одна проблема. – chux

 Смежные вопросы

  • Нет связанных вопросов^_^