对给出的任意一个命题公式(不超过四个命题变元),使学生会用C语言的程序编程表示出来,并且能够计算它在各组真值指派下所应有的真值,画出其真值表。
#include<iostream> using namespace std; struct { int p[4] = {1,1,0,0}; int q[4] = {1,0,1,0}; }m; int main() { cout << " p:"; for(int i = 0;i < 4;i++) cout << m.p[i] << " "; cout << endl; cout << " q:"; for(int i = 0;i < 4;i++) cout << m.q[i] << " "; cout << endl; //非p cout << " 非p:"; int copyp[4]; int k = 0; int feip[k]; for(int i = 0;i < 4;i++) copyp[i] = m.p[i]; for(int i = 0;i < 4;i++) { if(copyp[i] == 0) copyp[i] = 1; else copyp[i] = 0; } for(int i = 0;i < 4;i++) { feip[i] = copyp[i]; cout << copyp[i] << " "; } cout << endl; //p交q cout << "p合取q:"; for(int i = 0;i < 4;i++) { if(m.p[i] == 0 || m.q[i] == 0) cout << 0 << " "; else cout << 1 << " "; } cout << endl; //p并q cout << "p析取q:"; for(int i = 0;i < 4;i++) { if(m.p[i] == 1 || m.q[i] == 1) cout << 1 << " "; else cout << 0 << " "; } cout << endl; //p蕴含q cout << "p蕴含q:"; for(int i = 0;i < 4;i++) { if(feip[i] == 1 || m.q[i] == 1) cout << 1 << " "; else cout << 0 << " "; } cout << endl; //p当且仅当q cout << "p等价q:"; for(int i = 0;i < 4;i++) { if((m.p[i] == 1 && m.q[i] == 1) || (m.p[i] == 0 && m.q[i] == 0)) cout << 1 << " "; else cout << 0 << " "; } cout << endl; return 0; }
运行结果:
以下代码为可输入的代码,用布尔值实现
#include<iostream> using namespace std; void function(bool x,bool y) { bool m = x&y; bool n = x|y; bool a,b,c; if(x == 1 && y == 0) a = 0; else a = 1; if(y == 1 && x == 0) b = 0; else b = 1; if(x == y) c = 1; else c = 0; cout << "p q ﹁p ﹁q p∩q p∪q p→q q→p p←→p p⊕q" << endl; cout << x << " " << y << " " << !x << " " << !y << " "; cout << m << " " << n << " "; cout << a << " " << b << " " << c << " " << !c << endl; } int main() { bool p,q; int n; cout << "请输入需要测试几组数据:"; cin >> n; while(n--) { cout << "请输入命题p和命题q的真值:"; cin >> p >> q; function(p,q); } return 0; }
运行结果: