对于 真值表都不陌生。其原理略
代码如下:
#include
#include
void TruthTable(const int n);
enum { FALSE, TRUE };
int main()
{
const int nBoolNum = 5;
TruthTable(nBoolNum);
return 0;
}
void TruthTable(const int N)
{
int nState = (int)pow(2.0, N);
int nTotalNum = nState * N;
int* nPtr = new int[nTotalNum];
int nRem, nDiv, nCol;
int nCount = 0; // N incerments
for (int nIndex = 0; nIndex < nState; ++nIndex)
{
nDiv = nIndex;
for (nCol = N - 1 + nCount; nCol >= 0 + nCount; --nCol)
{
nRem = nDiv % 2;
nDiv /= 2;
if (!nRem)
nPtr[nCol] = FALSE;
else
nPtr[nCol] = TRUE;
}
for (int i = nCount; i < N + nCount; ++i) // Display
std::cout << nPtr[i] << '\t';
nCount += N;
std::cout << std::endl;
}
delete[] nPtr;
}
运行结果:正确且每行生成的数值对应成功