>>536
(1)
#include <stdio.h>

void d2b(int n)
{
int i;
for(i=7; i>=0; i--)
printf("%d ",(n>>i)%2);
putchar('\n');
}

int main(int argc, char** argv)
{
int c;
char buf[128];
while(1)
{
printf("2進数に直したい10進数の正の整数を入れてください\n"
"負の数の場合は終了です\n");
scanf("%d",&c);
if(c < 0)
break;
d2b(c);
}
return 0;
}

シフトは駄目かな?