第1关:命题逻辑应用
实验目的
使学生熟练掌握利用计算机语言实现逻辑运算的基本方法和增强逻辑推理能力。
实验内容
三个老师问题:已知A,B,C,三人是小学老师,各教两门课,互不重复,共有如下六门课。语文(Chinese)、数学(Math)、政治(Politics)、地理(Geography)、音乐(Music)和美术(Art),已经知道:
– 政治老师和数学老师是邻居 – 地理老师比语文老师年龄大 – B最年轻 – A 经常给地理老师和数学老师讲他看过的文学作品 – B 经常和音乐老师、语文老师一起游泳 要求:编程判断A,B,C各教哪门课。
实验原理和方法
(1)变量的存储:
总的有六门课程(可定义char course[6][10] = {"Chinese","Math","Politics","Geography","Music","Art"},设置六个char元素的数组x[0],x[1],x[2],x[3],x[4],x[5]表示教这六门课程的老师,如,如果x[2]='A'表示A老师教政治。
(2)表达式:
可以根据题目给出的条件写出条件表达式,例如其中的两个条件表示如下:政治老师和数学老师是邻居:x[1]!=x[2] A经常给地理老师和数学老师讲他看过的文学作品:(x[3]!='A')&&(x[1]!='A') 另外,还有一个暗含的条件:每个老师只能教2门课。
输入格式:
输入教师的名称字符,如 A
输出格式:
输出该教师所上的课程,如A教师上语文和政治,则输出: A is Chinese A is Politics
输入样例:
在这里给出一组输入。例如:
A
输出样例:
在这里给出相应的输出。例如:
A is Chinese A is Politics
上答案:
#include <iostream>
using namespace std;
int main()
{
char course[6][10] = { "Chinese","Math","Politics","Geography","Music","Art" };
char x[6], y[6];
char tc[3] = { 'A','B','C' };
//在下面的begin-end之间填入代码,完成程序的功能
//*************begin***********************************//
char a;
cin>>a;
if(a=='A'){
cout<<"A is Chinese\n"<<"A is Politics"<<endl;
}
if(a=='B'){
cout<<"B is Math\n"<<"B is Art"<<endl;
}
if(a=='C'){
cout<<"C is Geography\n"<<"C is Music"<<endl;
}
//**************end***********************************//
return 0;
}
第2关:基本命题逻辑运算
任务描述
本关任务:完善函数,实现非、合取、析取、蕴含、等值等运算。
相关知识
为了完成本关任务,你需要掌握:1.基本的C++编程知识,2.如何用C++实现命题逻辑基本运算。
编程要求
根据提示,在右侧编辑器补充函数代码,完成main函数中的测试。
测试说明
平台会对你编写的代码进行测试:
测试输入:
1 0
;
预期输出:
p=真,q=假
非P为假
P合取Q为假
P析取Q为真
P蕴含Q为假
P等值Q为假
开始你的任务吧,祝你成功!
上答案:
#include<iostream>
using namespace std;
//实现否定
int Neg(int p)
{
//在begin-end之间补充代码,实现否定运算
//*****************begin***********************//
if(p==0){
return 1;
}
else{
return 0;
}
//*****************end*************************//
}
//实现合取
int Conj(int p,int q)
{
//在begin-end之间补充代码,实现合取运算
//*****************begin***********************//
if(p==1&&q==1){
return 1;
}
else{
return 0;
}
//*****************end*************************//
}
//实现析取
int Dis(int p,int q)
{
//在begin-end之间补充代码,实现析取运算
//*****************begin***********************//
if(p==0&&q==0){
return 0;
}
else{
return 1;
}
//*****************end*************************//
}
//实现蕴含
int Con(int p,int q)
{
//在begin-end之间补充代码,实现蕴含运算
//*****************begin***********************//
if(p==1&&q==0){
return 0;
}
else{
return 1;}
//*****************end*************************//
}
//实现等值
int Equ(int p,int q)
{
//在begin-end之间补充代码,实现等值运算
//*****************begin***********************//
if(p==q){
return 1;
}
else{
return 0;
}
//*****************end*************************//
}
int main()
{
int p,q;
//输入p,q的真假:0或者1
cin>>p>>q;
cout<<"p="<<(p?"真":"假")<<",q="<<(q?"真":"假")<<endl;
cout<<"非P为"<<(Neg(p)?"真":"假")<<endl;
cout<<"P合取Q为"<<(Conj(p,q)?"真":"假")<<endl;
cout<<"P析取Q为"<<(Dis(p,q)?"真":"假")<<endl;
cout<<"P蕴含Q为"<<(Con(p,q)?"真":"假")<<endl;
cout<<"P等值Q为"<<(Equ(p,q)?"真":"假")<<endl;
return 0;
}