如何用C、C++和Python写一个程序来打印XY+Z的真值表

425 阅读2分钟

问题陈述

我们需要编写一个程序来打印逻辑XY+Z的真值表。

XY+Z 逻辑在XY 之间有一个 AND 操作符,在XYZ 之间有一个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等。