c语言实现根据表达式打印真值表
时间: 2024-10-28 14:09:11 浏览: 24
C语言 实现离散数学真值表
在C语言中,实现根据给定的表达式打印真值表可以采用递归或者循环的方式来处理二元或多元的操作。这里举一个简单的例子,我们假设要处理的是二元布尔运算(如 AND、OR 和 NOT),你可以创建一个函数来遍历所有的输入组合并打印相应的结果。
```c
#include <stdio.h>
// 假设我们有三个基本的运算符:AND, OR, NOT
char eval(char op, char a, char b) {
switch (op) {
case 'A': // AND
return a && b;
case 'O': // OR
return a || b;
case 'N': // NOT
return !a;
default:
return '\0'; // 如果不是已知的运算符,返回错误
}
}
void printTruthTable(const char* expr) {
const int size = 2; // 只考虑二进制输入
for (int i = 0; i < size; i++) {
for (int j = 0; j < size; j++) {
char result = eval(expr[0], i == 0 ? '0' : '1', j == 0 ? '0' : '1');
printf("%d %d ", i, j); // 输入
if (result == '1') printf("1\n"); // 输出结果
else printf("0\n");
}
}
}
int main() {
printTruthTable("AO"); // 传递你想打印的运算符字符串
return 0;
}
```
注意这只是一个基础示例,实际的实现可能会更复杂,特别是在处理包含优先级、括号或其他复杂逻辑的表达式时。运行这个程序会打印出 AND 和 OR 运算的真值表。
阅读全文