真值表c语言实现离散数学实验
时间: 2024-11-22 15:28:18 浏览: 32
真值表(Truth Table)在离散数学中用于表示逻辑运算的结果,如与(AND)、或(OR)、非(NOT)等布尔运算。在C语言中实现真值表通常会创建一个二维数组来存储所有可能输入和对应结果的组合。
以下是一个简单的C程序示例,用于展示如何使用数组来表示逻辑运算的真值表:
```c
#include <stdio.h>
#define NUM_BITS 2 // 二进制位数,这里假设是2位(例如AND运算)
#define OPERATORS { '!', '&' } // 操作符数组,包含 NOT 和 AND
typedef enum {
INPUT_A = 0,
INPUT_B = 1,
OUTPUT
} Operation;
// 存储每个操作的输出结果
int truth_table[NUM_BITS][ARRAY_SIZE(OPERATORS) + 1];
void print_truth_table() {
for (int i = 0; i < (1 << NUM_BITS); i++) {
int input_a = i & (1 << INPUT_A);
int input_b = i & (1 << INPUT_B);
printf("Inputs: A=%d, B=%d\n", input_a, input_b);
for (int j = 0; j < ARRAY_SIZE(OPERATORS); j++) {
char op = OPERATORS[j];
switch (op) {
case '!':
truth_table[i][OUTPUT] = !input_a;
break;
case '&':
truth_table[i][OUTPUT] = input_a && input_b;
break;
default:
printf("Invalid operator %c\n", op);
}
printf("Output for %c: %d\n", op, truth_table[i][OUTPUT]);
}
printf("\n");
}
}
int main() {
print_truth_table();
return 0;
}
```
在这个例子中,`truth_table`数组的每一行代表一个输入状态(A和B的二进制),每一列对应一个操作符。运行此程序将输出所有可能输入下每个操作的结果。
阅读全文