#include <iostream> #include <stdio.h> using namespace std; //打印表头 void printtitle(char a,char b,char c,int one,int two) { printf("%c %c %c %c",a,b,c,a); switch(one) { case 0:printf("~%c",b);break; case 1:printf("^%c",b);break; case 2:printf("\/%c",b);break; case 3:printf("->%c",b);break; case 4:printf("<->%c",b);break; } switch(two) { case 0:printf("~%c\n",c);break; case 1:printf("^%c\n",c);break; case 2:printf("\/%c\n",c);break; case 3:printf("->%c\n",c);break; case 4:printf("<->%c\n",c);break; } } //真值运算 int yunsuan(int p,int q,int connective) { if(connective==1) { return p*q; } else if(connective==2) { return ((p+q)/2+(p+q)%2); } else if(connective==3) { if(p==0) return 1; else { if(q==1) return 1; else return 0; } } else if(connective==4) { if(p==q) return 1; else return 0; } } int main() { //输入 char a,b,c; int m,n; cout<<"逻辑联结词选择:“非”请输入0,“与”请输入1,“或”请输入2,“蕴涵”请输入3,“双向蕴涵”请输入4!"<<endl; cout<<"输入第1个变量:"; cin>>a; cout<<"输入第一个逻辑连接词:"; cin>>m; cout<<"输入第2个变量:"; cin>>b; cout<<"输入第二个逻辑连接词:"; cin>>n; cout<<"输入第3个变量:"; cin>>c; //输出表头 printtitle(a,b,c,m,n); //输出格式及运算结果 int i,j,k; for (i=0;i<2;i++) { for (j=0;j<2;j++) { for (k=0;k<2;k++) { printf("%d %d %d ",i,j,k); if(m<=n) cout<<yunsuan(yunsuan(i,j,m),k,n)<<endl; else cout<<yunsuan(i,yunsuan(j,k,n),m)<<endl; } } } return 0; }解释这段代码
时间: 2024-04-21 12:28:48 浏览: 160
这段代码是一个简单的逻辑运算表格生成程序,可以根据输入的逻辑运算符和变量生成一个真值表。程序中包含了一个打印表头的函数printtitle()和一个真值运算的函数yunsuan()。
在主函数main()中,首先要求用户输入三个变量和两个逻辑运算符。然后调用printtitle()函数打印表头。接着使用三个循环遍历所有可能的变量组合,并根据输入的逻辑运算符进行运算,最后输出每组变量的运算结果。
其中,yunsuan()函数接收三个参数:p和q是两个变量的取值(0或1),connective是逻辑运算符的选择(1表示与运算,2表示或运算,3表示蕴涵运算,4表示双向蕴涵运算),函数返回的是运算结果(0或1)。
整个程序的逻辑比较简单,主要是用来演示如何生成逻辑运算表格的。
阅读全文