這題就是輸出 0 ~ 2^n -1 的數字的二進位表示,所以直接用迴圈就好
int pow2[15]={0,2,4,8,16,32,64,128,256,512,1024,2048,4096,8192,16384}; a=pow2[n];
for(i=0;i<a;i++) { b=i; for(j=0;j<n;j++) /* 要印 n 個位元 */ { (b&(a/2)) ? printf("1") : printf("0"); /* 從高位開始比較 */ b<<=1; /* 看不懂的去查 位元運算 */ } printf("\n"); }