Tu programa no funcionara correctamente ya que lees el numero como un entero y después tratas de procesar cada uno de sus dígitos con bucles como este:
En su lugar puedes leer la secuencia de dígitos binarios como una cadena con scanf y a continuación realizas el proceso de conteo de transiciones y media (NPI). Mas o menos así:
Un saludo
			Código (c) [Seleccionar] 
printf("Escriba una secuencia:");
scanf("%d", &num);
/* ... */
while ((num == '0') || (num == '1')){En su lugar puedes leer la secuencia de dígitos binarios como una cadena con scanf y a continuación realizas el proceso de conteo de transiciones y media (NPI). Mas o menos así:
Código (c) [Seleccionar] 
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
   char bit[128];
   int num_bits;
   int i;
   
   printf("Introduce el numero: ");
   fflush(stdout);
   if (scanf("%127[01]%n", bit, &num_bits) != 1)
      return EXIT_FAILURE;
   
   /* Algun proceso, por ejemplo impresion de los bits */
   printf("Valor de cada bit (%d):\n", num_bits);
   for (i = 0; i < num_bits; i++)
      printf("bit[%2d] == \'%c\'\n", i, bit[i]);
   
   return EXIT_SUCCESS;
}Un saludo