Ваш вопрос не имеет особого смысла, но, надеюсь, это в некоторой степени соответствует тому, что вы ищете:
#include <stdio.h>
main(){
int n = 3;
int total = (n*n)-1;
char poss[total];
int i = 0;
for (i = 0; i < total; ++i){
poss[i] = i;
printf("%d \t",poss[i]);
printf("%d \n",poss[i] & 1);
}
}
Итак, n - это ваш n, как вы сказали, total - это общее количество возможностейудерживаться в n (3) битах.Затем устанавливается массив символов, вы можете использовать int, если он слишком короткий.Все возможные варианты добавлены.Это потому, что возможности таблиц истинности такие же, как у того, что может быть в этих многих битах.
Второй printf показывает операцию AND, здесь мы будем делать, например:
000 AND 001 => 000
001 AND 001 => 001
010 AND 001 => 000
011 AND 001 => 001
См. Код Alfs для форматирования так, как вы хотите (особенно в двоичном, а не в десятичном виде)