如何生成一个命题公式的真值表用C语言实现?
时间: 2024-11-12 14:32:46 浏览: 20
用c语言做命题公式真值表(仅支持交,并,非三种运算符)
4星 · 用户满意度95%
生成一个命题公式(布尔表达式)的真值表通常涉及对所有变量取值组合的遍历,并计算出相应组合下命题的真假值。这在C语言中可以使用嵌套循环和数组来存储结果。下面是一个简单的示例,用于生成二元运算符A && B(按位与)的真值表:
```c
#include <stdio.h>
#define NUM_VARS 2 // 变量数
// 定义一个结构体表示变量和对应的值
typedef struct {
int variable;
bool value;
} VarValue;
void generateTruthTable(char *formula) {
// 创建一个布尔数组存放结果
bool truthTable[NUM_VARS][NUM_VARS] = {0};
// 生成所有变量取值组合
for (int a = 0; a <= 1; a++) {
for (int b = 0; b <= 1; b++) {
// 设置变量值
VarValue var1 = {0, a};
VarValue var2 = {1, b};
// 计算并设置结果
bool result = formula == "AND" ? ((a && b) ? 1 : 0) : ((a || b) ? 1 : 0); // 对应逻辑操作
truthTable[a][b] = result;
}
}
// 打印结果
printf("Variable A\tVariable B\tResult\n");
for (int i = 0; i <= 1; i++) {
for (int j = 0; j <= 1; j++) {
printf("%d\t%d\t%d\n", i, j, truthTable[i][j]);
}
}
}
int main() {
char formula[5] = "AND"; // 修改这里来改变你要生成真值表的逻辑运算
generateTruthTable(formula);
return 0;
}
```
阅读全文