问题陈述
我们需要编写一个程序来打印逻辑XY+Z的真值表。
XY+Z 逻辑在X 和Y 之间有一个 AND 操作符,在XY 和Z 之间有一个OR 操作符。
算法
这个逻辑的算法非常简单。我们只需要创建一个嵌套的三级循环,最外层的循环代表X ,第二个循环代表Y ,第三个循环代表Z 。而在Z 值里面,我们将使用逻辑运算符为XY+Z 表打印设置逻辑。
所有的编程语言都支持基本的逻辑运算符,如AND(&&)、OR(||)和NOT(!)。
打印XY+Z真值表的C语言程序
#include<stdio.h>
int main()
{
int X, Y, Z;
printf("X \t Y \t \Z \t XY+Z\n");
//X value range 0 to 1
for(X=0; X<=1; X++)
{
//Y value range 0 to1
for(Y=0;Y<=1; Y++)
{
//Z value range 0 to1
for(Z=0;Z<=1;Z++)
{
//check for the XY+Z True values
if((X &&Y) || Z)
{
//print 1 for the true value
printf("%d \t %d \t %d \t 1\n", X,Y, Z );
}
else
{
//print 0 for the false value
printf("%d \t %d \t %d \t 0\n", X,Y, Z );
}
}
}
}
return 0;
}
输出
X Y Z XY+Z
0 0 0 0
0 0 1 1
0 1 0 0
0 1 1 1
1 0 0 0
1 0 1 1
1 1 0 1
1 1 1 1
C++程序打印XY+Z的真值表
#include<iostream>
using namespace std;
int main()
{
int X, Y, Z;
cout<<"X \t Y \t Z \t XY+Z\n";
//X value range 0 to 1
for(X=0; X<=1; X++)
{
//Y value range 0 to1
for(Y=0;Y<=1; Y++)
{
//Z value range 0 to1
for(Z=0;Z<=1;Z++)
{
//check for the XY+Z True values
if((X &&Y) || Z)
{
//print 1 for the true value
cout<<X<< " \t "<<Y<<" \t "<<Z<<" \t 1\n";
}
else
{
//print 0 for the false value
cout<<X<< " \t "<<Y<<" \t "<<Z<<" \t 0\n";
}
}
}
}
return 0;
}
输出
X Y Z XY+Z
0 0 0 0
0 0 1 1
0 1 0 0
0 1 1 1
1 0 0 0
1 0 1 1
1 1 0 1
1 1 1 1
打印XY+Z真值表的Python程序
print("X \t Y \t Z \t XY+Z")
# //X value range 0 to 1
for X in range(0,2):
# Y value range 0 to 1
for Y in range(0,2):
# Z value range 0 to 1
for Z in range(0,2):
# check for the XY+Z True values
if (X and Y) or Z:
# print 1 for the true value
print(f"{X} \t {Y} \t {Z} \t 1")
else:
# print 0 for the false value
print(f"{X} \t {Y} \t {Z} \t 0")
输出
X Y Z XY+Z
0 0 0 0
0 0 1 1
0 1 0 0
0 1 1 1
1 0 0 0
1 0 1 1
1 1 0 1
1 1 1 1
总结!
要建立一个真值表,我们只需要N个嵌套的for循环,其中N代表真值表中使用的变量数量。在上面的程序中,我们只有3个变量X、Y和Z,因此我们只需要3个嵌套的for循环。程序的逻辑可以用条件语句和逻辑运算符写在最后一个循环里面。使用与上述程序相同的模式,我们可以为3个变量编写任何真值表,如XYZ、X+Y+Z、X+YZ等。